-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathCMakeLists.txt
138 lines (128 loc) · 4.61 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
cmake_minimum_required(VERSION 2.8...3.19)
find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
endif()
PROJECT(nltools C)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
option(BUILD_SHARED_LIBS "Build shared libs" ON)
if(CMAKE_BUILD_TYPE MATCHES Debug)
ADD_DEFINITIONS(-g -DDEBUG -D_DEBUG)
set(CMAKE_CONFIGURATION_TYPES "Debug" CACHE STRING "My multi config types" FORCE)
else(CMAKE_BUILD_TYPE MATCHES Debug)
ADD_DEFINITIONS(-DNDEBUG)
set(CMAKE_CONFIGURATION_TYPES "Release" CACHE STRING "My multi config types" FORCE)
endif(CMAKE_BUILD_TYPE MATCHES Debug)
if (MSVC)
if (BUILD_SHARED_LIBS)
ADD_DEFINITIONS(-D_DLL -D_MAKE_DLL)
else()
set(CompilerFlags
CMAKE_CXX_FLAGS
CMAKE_CXX_FLAGS_DEBUG
CMAKE_CXX_FLAGS_RELEASE
CMAKE_C_FLAGS
CMAKE_C_FLAGS_DEBUG
CMAKE_C_FLAGS_RELEASE
)
foreach(CompilerFlag ${CompilerFlags})
string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}")
endforeach()
endif()
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../out/lib")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../out/bin")
ADD_DEFINITIONS(-DWIN32 -D_WINDOWS -D_CONSOLE -D_CRT_SECURE_NO_WARNINGS)
include_directories("${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_SOURCE_DIR}/h;${CMAKE_CURRENT_SOURCE_DIR}/../huskylib;${CMAKE_CURRENT_SOURCE_DIR}/../fidoconf;${CMAKE_CURRENT_SOURCE_DIR}/../smapi;")
if(CMAKE_BUILD_TYPE MATCHES Debug)
list( APPEND CMAKE_FIND_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../out/lib/Debug" )
else(CMAKE_BUILD_TYPE MATCHES Debug)
list( APPEND CMAKE_FIND_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../out/lib/Release" )
endif(CMAKE_BUILD_TYPE MATCHES Debug)
else ()
if (NOT BUILD_SHARED_LIBS)
SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
include(FindZLIB)
endif()
include_directories("h")
ADD_DEFINITIONS(-Wall -DUNIX)
endif (MSVC)
find_library(husky_LIB NAMES husky PATHS "${CMAKE_FIND_ROOT_PATH}")
find_library(fidoconfig_LIB NAMES fidoconfig PATHS "${CMAKE_FIND_ROOT_PATH}")
find_library(smapi_LIB NAMES smapi PATHS "${CMAKE_FIND_ROOT_PATH}")
find_library(hptzip_LIB NAMES hptzip PATHS "${CMAKE_FIND_ROOT_PATH}")
if (MSVC)
if (NOT BUILD_SHARED_LIBS)
set(hptzip_LIB FALSE)
endif()
endif()
message("-------------------------")
message("System : ${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_VERSION}")
message("Compiler : ${CMAKE_C_COMPILER_ID} ${CMAKE_C_COMPILER_VERSION}")
message("Prefix : ${CMAKE_INSTALL_PREFIX} (run \"cmake . -DCMAKE_INSTALL_PREFIX:PATH=/other\" for other prefix)")
message("libhusky : ${husky_LIB}")
message("libfidoconfig : ${fidoconfig_LIB}")
message("libsmapi : ${smapi_LIB}")
message("hptzip : ${hptzip_LIB}")
if (NOT BUILD_SHARED_LIBS)
message("zlib : ${ZLIB_LIBRARIES}")
endif()
message("Build shared : ${BUILD_SHARED_LIBS}")
message("Build type : ${CMAKE_CONFIGURATION_TYPES}")
message("-------------------------")
ADD_EXECUTABLE(nldiff
src/nldiff.c
src/crc16.c
)
ADD_EXECUTABLE(nlcrc
src/nlcrc.c
src/crc16.c
)
ADD_EXECUTABLE(ulc
src/ulcsort.c
src/ulcomp.c
src/ulc.c
src/string.c
src/nldate.c
src/julian.c
src/nlfind.c
)
ADD_EXECUTABLE(nlupd
src/nlupdate.c
src/string.c
src/nldate.c
src/julian.c
src/nlfind.c
)
target_link_libraries(nldiff ${fidoconfig_LIB} ${smapi_LIB} ${husky_LIB})
target_link_libraries(nlcrc ${fidoconfig_LIB} ${smapi_LIB} ${husky_LIB})
target_link_libraries(ulc ${fidoconfig_LIB} ${smapi_LIB} ${husky_LIB})
target_link_libraries(nlupd ${fidoconfig_LIB} ${smapi_LIB} ${husky_LIB})
if (hptzip_LIB)
ADD_DEFINITIONS(-DUSE_HPTZIP=1 -DNOUNCRYPT -DNOCRYPT)
target_link_libraries(nlupd ${hptzip_LIB})
if (NOT BUILD_SHARED_LIBS)
target_link_libraries(nlupd ${ZLIB_LIBRARIES})
endif()
if (MSVC)
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../hptzip")
if (NOT BUILD_SHARED_LIBS)
SET (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO")
endif()
endif()
endif(hptzip_LIB)
INSTALL(TARGETS nldiff nlcrc ulc nlupd
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
)
if (NOT MSVC)
set(CPACK_GENERATOR ${CPACK_GENERATOR} TGZ)
else()
set(CPACK_GENERATOR ${CPACK_GENERATOR} 7Z)
endif (NOT MSVC)
set (CPACK_STRIP_FILES TRUE)
set (CPACK_PACKAGE_VERSION_MAJOR "1")
set (CPACK_PACKAGE_VERSION_MINOR "9")
execute_process(COMMAND git log -1 --date=short --format=format:%cd ${CMAKE_CURRENT_SOURCE_DIR}/h/*.h ${CMAKE_CURRENT_SOURCE_DIR}/src/*.c
OUTPUT_VARIABLE CPACK_PACKAGE_VERSION_PATCH)
file(WRITE cvsdate.h "char cvs_date[]=\"${CPACK_PACKAGE_VERSION_PATCH}\";")
INCLUDE(CPack)