1project(petway)
2
3# set(CMAKE_VERBOSE_MAKEFILE ON)
4set(CMAKE_C_COMPILER clang)
5set(CMAKE_C_STANDARD 23)
6set(CMAKE_C_STANDARD_REQUIRED ON)
7
8add_compile_options(-Wall -Wextra -pedantic -Werror -Wno-unused-parameter -falign-functions=16)
9
10if(DEFINED ENV{DEBUG})
11 add_compile_options(-g)
12else()
13 add_compile_options(-O3)
14endif()
15
16find_package(ICU COMPONENTS uc)
17
18add_library(petway STATIC
19 src/pw_assert.c
20 src/pw_dump.c
21 src/pw_hash.c
22 src/pw_interfaces.c
23 src/pw_task.c
24 src/lib/accessors.c
25 src/lib/cgi_utils.c
26 src/lib/ctype/charlower.c
27 src/lib/ctype/chartype.c
28 src/lib/ctype/charupper.c
29 src/lib/env.c
30 src/lib/file/buffered_file.c
31 src/lib/file/file.c
32 src/lib/file/makedirs.c
33 src/lib/file/read_file.c
34 src/lib/file/read_text_file.c
35 src/lib/file/rename.c
36 src/lib/file/shorthand.c
37 src/lib/file/stat.c
38 src/lib/file/write_file.c
39 src/lib/file/write_text_file.c
40 src/lib/html_utils.c
41 src/lib/json_serializer.c
42 src/lib/idna/idna_decode.c
43 src/lib/kvargs.c
44 src/lib/netutils.c
45 src/lib/parsers.c
46 src/lib/socket.c
47 src/lib/string_io.c
48 src/lib/path/basename.c
49 src/lib/path/dirname.c
50 src/lib/path/path_split.c
51 src/lib/path/path_join.c
52 src/lib/path/path_normalize.c
53 src/lib/path/path_va.c
54 src/lib/uri/parse_uri.c
55 src/types/array/array.c
56 src/types/array/array_iterator.c
57 src/types/array/basic_array.c
58 src/types/compound.c
59 src/types/datetime.c
60 src/types/exception.c
61 src/types/hash_table.c
62 src/types/map.c
63 src/types/pw_as_/as_bool.c
64 src/types/pw_as_/as_char.c
65 src/types/pw_as_/as_uchar.c
66 src/types/pw_as_/as_short.c
67 src/types/pw_as_/as_ushort.c
68 src/types/pw_as_/as_int.c
69 src/types/pw_as_/as_unsigned.c
70 src/types/pw_as_/as_long.c
71 src/types/pw_as_/as_ulong.c
72 src/types/pw_as_/as_longlong.c
73 src/types/pw_as_/as_ulonglong.c
74 src/types/pw_as_/as_int8.c
75 src/types/pw_as_/as_uint8.c
76 src/types/pw_as_/as_int16.c
77 src/types/pw_as_/as_uint16.c
78 src/types/pw_as_/as_int32.c
79 src/types/pw_as_/as_uint32.c
80 src/types/pw_as_/as_int64.c
81 src/types/pw_as_/as_uint64.c
82 src/types/pw_as_/as_float.c
83 src/types/pw_as_/as_double.c
84 src/types/pw_as_/as_size_t.c
85 src/types/pw_as_/as_ssize_t.c
86 src/types/pw_as_/as_ptrdiff_t.c
87 src/types/pw_as_/as_uintptr_t.c
88 src/types/set.c
89 src/types/status.c
90 src/types/string/append.c
91 src/types/string/capitalize.c
92 src/types/string/char_at.c
93 src/types/string/copy.c
94 src/types/string/create.c
95 src/types/string/dedent.c
96 src/types/string/equal_i.c
97 src/types/string/equal_z.c
98 src/types/string/equal_zi.c
99 src/types/string/erase.c
100 src/types/string/hash.c
101 src/types/string/indent.c
102 src/types/string/insert.c
103 src/types/string/is_ascii_digit.c
104 src/types/string/isdigit.c
105 src/types/string/isspace.c
106 src/types/string/lcut.c
107 src/types/string/panic.c
108 src/types/string/pw_printf.c
109 src/types/string/replace_all.c
110 src/types/string/reverse.c
111 src/types/string/rsplit_chr.c
112 src/types/string/skip_chars.c
113 src/types/string/skip_spaces.c
114 src/types/string/split_chr.c
115 src/types/string/string_type.c
116 src/types/string/strcat_va.c
117 src/types/string/strchr.c
118 src/types/string/strchr2.c
119 src/types/string/strchri.c
120 src/types/string/strip.c
121 src/types/string/strip_chars.c
122 src/types/string/strput.c
123 src/types/string/strrchr.c
124 src/types/string/strrchr2.c
125 src/types/string/strstr.c
126 src/types/string/strstri.c
127 src/types/string/strstrz.c
128 src/types/string/substr.c
129 src/types/string/substreq.c
130 src/types/string/substreqi.c
131 src/types/string/substreqz.c
132 src/types/string/substreqzi.c
133 src/types/string/truncate.c
134 src/types/string/upper_lower.c
135 src/types/string/utf.c
136 src/types/struct.c
137 src/types/types.c
138)
139
140target_include_directories(petway PUBLIC . include libpussy)
141target_link_libraries(petway ${CMAKE_SOURCE_DIR}/libpussy/libpussy.a)
142
143# common definitions
144
145set(common_defs_targets petway)
146
147foreach(TARGET ${common_defs_targets})
148
149 if(DEFINED ENV{DEBUG})
150 target_compile_definitions(${TARGET} PUBLIC DEBUG)
151 endif()
152
153 if(DEFINED ICU_FOUND AND NOT DEFINED ENV{PW_WITHOUT_ICU})
154 target_compile_definitions(${TARGET} PUBLIC PW_WITH_ICU)
155 endif()
156
157endforeach(TARGET)