1project(petway)
2
3# set(CMAKE_VERBOSE_MAKEFILE ON)
4#set(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)
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/env.c
26 src/lib/json_serializer.c
27 src/lib/kvargs.c
28 src/lib/netutils.c
29 src/lib/parsers.c
30 src/lib/socket.c
31 src/lib/string_io.c
32 src/lib/file/buffered_file.c
33 src/lib/file/file.c
34 src/lib/file/path.c
35 src/lib/file/shorthand.c
36 src/lib/file/stat.c
37 src/types/array/array.c
38 src/types/array/array_iterator.c
39 src/types/array/basic_array.c
40 src/types/compound.c
41 src/types/datetime.c
42 src/types/map/basic_map.c
43 src/types/status.c
44 src/types/string/append.c
45 src/types/string/char_at.c
46 src/types/string/copy.c
47 src/types/string/create.c
48 src/types/string/equal_z.c
49 src/types/string/equal_zi.c
50 src/types/string/erase.c
51 src/types/string/hash.c
52 src/types/string/insert_many.c
53 src/types/string/is_ascii_digit.c
54 src/types/string/isdigit.c
55 src/types/string/isspace.c
56 src/types/string/panic.c
57 src/types/string/rsplit_chr.c
58 src/types/string/skip_chars.c
59 src/types/string/skip_spaces.c
60 src/types/string/split_chr.c
61 src/types/string/string_type.c
62 src/types/string/strcat_va.c
63 src/types/string/strchr.c
64 src/types/string/strchr2.c
65 src/types/string/strchri.c
66 src/types/string/strrchr2.c
67 src/types/string/strstr.c
68 src/types/string/strstri.c
69 src/types/string/strstrz.c
70 src/types/string/substr.c
71 src/types/string/substreq.c
72 src/types/string/substreqi.c
73 src/types/string/substreqz.c
74 src/types/string/substreqzi.c
75 src/types/string/trim.c
76 src/types/string/truncate.c
77 src/types/string/upper_lower.c
78 src/types/string/utf.c
79 src/types/struct.c
80 src/types/types.c
81)
82
83target_include_directories(petway PUBLIC . include libpussy)
84target_link_libraries(petway ${CMAKE_SOURCE_DIR}/libpussy/libpussy.a)
85
86# test
87
88add_executable(test_pw test/test_pw.c)
89
90target_link_libraries(test_pw petway)
91
92if(DEFINED ICU_FOUND AND NOT DEFINED ENV{PW_WITHOUT_ICU})
93 target_link_libraries(test_pw ICU::uc)
94endif()
95
96# common definitions
97
98set(common_defs_targets petway test_pw)
99
100foreach(TARGET ${common_defs_targets})
101
102 if(DEFINED ENV{DEBUG})
103 target_compile_definitions(${TARGET} PUBLIC DEBUG)
104 endif()
105
106 if(DEFINED ICU_FOUND AND NOT DEFINED ENV{PW_WITHOUT_ICU})
107 target_compile_definitions(${TARGET} PUBLIC PW_WITH_ICU)
108 endif()
109
110endforeach(TARGET)