97 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
		
		
			
		
	
	
			97 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| 
								 | 
							
								cmake_minimum_required(VERSION 3.22)
							 | 
						||
| 
								 | 
							
								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)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								include_directories(
							 | 
						||
| 
								 | 
							
								    "${CMAKE_CURRENT_SOURCE_DIR}"
							 | 
						||
| 
								 | 
							
								    "${CMAKE_CURRENT_BINARY_DIR}"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								add_library(libdatrie ${LIB_SRCS})
							 | 
						||
| 
								 | 
							
								set_target_properties(libdatrie PROPERTIES OUTPUT_NAME "datrie")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								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" )
							 | 
						||
| 
								 | 
							
								    find_package(Iconv REQUIRED)
							 | 
						||
| 
								 | 
							
								    target_link_libraries(trietool PRIVATE libdatrie Iconv::Iconv)
							 | 
						||
| 
								 | 
							
								    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()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(prefix "${CMAKE_INSTALL_PREFIX}")
							 | 
						||
| 
								 | 
							
								set(exec_prefix "\${prefix}")
							 | 
						||
| 
								 | 
							
								set(libdir "\${prefix}/lib")
							 | 
						||
| 
								 | 
							
								set(includedir "\${prefix}/include")
							 | 
						||
| 
								 | 
							
								configure_file(datrie-0.2.pc.in datrie-0.2.pc)
							 | 
						||
| 
								 | 
							
								install(
							 | 
						||
| 
								 | 
							
								    FILES "${CMAKE_CURRENT_BINARY_DIR}/datrie-0.2.pc"
							 | 
						||
| 
								 | 
							
								    DESTINATION "lib/pkgconfig"
							 | 
						||
| 
								 | 
							
								)
							 |