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)