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/lcut.c
57 src/types/string/panic.c
58 src/types/string/rsplit_chr.c
59 src/types/string/skip_chars.c
60 src/types/string/skip_spaces.c
61 src/types/string/split_chr.c
62 src/types/string/string_type.c
63 src/types/string/strcat_va.c
64 src/types/string/strchr.c
65 src/types/string/strchr2.c
66 src/types/string/strchri.c
67 src/types/string/strip.c
68 src/types/string/strip_chars.c
69 src/types/string/strrchr2.c
70 src/types/string/strstr.c
71 src/types/string/strstri.c
72 src/types/string/strstrz.c
73 src/types/string/substr.c
74 src/types/string/substreq.c
75 src/types/string/substreqi.c
76 src/types/string/substreqz.c
77 src/types/string/substreqzi.c
78 src/types/string/truncate.c
79 src/types/string/upper_lower.c
80 src/types/string/utf.c
81 src/types/struct.c
82 src/types/types.c
83)
84
85target_include_directories(petway PUBLIC . include libpussy)
86target_link_libraries(petway ${CMAKE_SOURCE_DIR}/libpussy/libpussy.a)
87
88# test
89
90add_executable(test_pw test/test_pw.c)
91
92target_link_libraries(test_pw petway)
93
94if(DEFINED ICU_FOUND AND NOT DEFINED ENV{PW_WITHOUT_ICU})
95 target_link_libraries(test_pw ICU::uc)
96endif()
97
98# common definitions
99
100set(common_defs_targets petway test_pw)
101
102foreach(TARGET ${common_defs_targets})
103
104 if(DEFINED ENV{DEBUG})
105 target_compile_definitions(${TARGET} PUBLIC DEBUG)
106 endif()
107
108 if(DEFINED ICU_FOUND AND NOT DEFINED ENV{PW_WITHOUT_ICU})
109 target_compile_definitions(${TARGET} PUBLIC PW_WITH_ICU)
110 endif()
111
112endforeach(TARGET)