vcpkg/ports/libdatrie/CMakeLists.txt
2017-12-21 04:05:50 +03:00

95 lines
2.5 KiB
CMake

cmake_minimum_required(VERSION 3.0)
project(libdatrie LANGUAGES C)
option(SKIP_HEADERS "Skip headers" OFF)
option(SKIP_TOOL "Skip tool" OFF)
option(BUILD_SHARED_LIBS "Build shared libs" OFF)
set(LIB_SRCS
datrie/alpha-map.c
datrie/darray.c
datrie/dstring.c
datrie/fileutils.c
datrie/tail.c
datrie/trie.c
datrie/trie-string.c
)
set(LIB_HDRS
datrie/alpha-map.h
datrie/trie.h
datrie/triedefs.h
datrie/typedefs.h
)
if(WIN32)
list(APPEND LIB_SRCS datrie/libdatrie.def)
endif()
include(CheckIncludeFile)
include(CheckFunctionExists)
set(STDC_HEADERS 1)
check_include_file(dlfcn.h HAVE_DLFCN_H)
check_include_file(inttypes.h HAVE_INTTYPES_H)
check_include_file(limits.h HAVE_LIMITS_H)
check_include_file(memory.h HAVE_MEMORY_H)
check_include_file(stdint.h HAVE_STDINT_H)
check_include_file(stdio.h HAVE_STDIO_H)
check_include_file(stdlib.h HAVE_STDLIB_H)
check_include_file(strings.h HAVE_STRINGS_H)
check_include_file(string.h HAVE_STRING_H)
check_include_file(sys/stat.h HAVE_SYS_STAT_H)
check_include_file(sys/types.h HAVE_SYS_TYPES_H)
check_include_file(unistd.h HAVE_UNISTD_H)
check_function_exists(nl_langinfo HAVE_LANGINFO_CODESET)
check_function_exists(locale_charset HAVE_LOCALE_CHARSET)
check_function_exists(malloc HAVE_MALLOC)
configure_file(config.h.cmake config.h)
add_library(libdatrie ${LIB_SRCS})
target_include_directories(libdatrie PRIVATE ".")
target_include_directories(libdatrie PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(libdatrie PROPERTIES PREFIX "")
set_target_properties(libdatrie PROPERTIES DEBUG_POSTFIX "d")
if(MSVC)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE)
endif()
if (NOT SKIP_TOOL)
add_executable(trietool "tools/trietool.c" )
target_include_directories(trietool PRIVATE ".")
target_include_directories(trietool PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
target_link_libraries(trietool libdatrie)
find_path(ICONV_INCLUDE_DIR iconv.h)
find_library(ICONV_LIBRARY NAMES iconv libiconv)
find_library(CHARSET_LIBRARY NAMES charset libcharset)
target_include_directories(trietool PRIVATE ${ICONV_INCLUDE_DIR})
target_link_libraries(trietool ${ICONV_LIBRARY} ${CHARSET_LIBRARY})
install(
TARGETS trietool
RUNTIME DESTINATION bin
)
endif()
install(
TARGETS libdatrie
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
if (NOT SKIP_HEADERS)
install(
FILES ${LIB_HDRS}
DESTINATION "include/datrie"
)
endif()