| 1 | cmake_minimum_required(VERSION 2.6) |
|---|
| 2 | |
|---|
| 3 | SET_PROPERTY(GLOBAL PROPERTY USE_FOLDERS On) |
|---|
| 4 | |
|---|
| 5 | SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/build/cmake;${CMAKE_MODULE_PATH}") |
|---|
| 6 | |
|---|
| 7 | PROJECT(NSCP CXX C) |
|---|
| 8 | |
|---|
| 9 | # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### |
|---|
| 10 | # |
|---|
| 11 | # Setup section |
|---|
| 12 | # An option to override this is to set them in the build.cmake file |
|---|
| 13 | # |
|---|
| 14 | # ### ### ### ### |
|---|
| 15 | # Include local build enviornment |
|---|
| 16 | include(build.cmake) |
|---|
| 17 | # ### ### ### ### |
|---|
| 18 | # Generic includes |
|---|
| 19 | # TODO |
|---|
| 20 | # ### ### ### ### |
|---|
| 21 | # NSCP Includes |
|---|
| 22 | SET(NSCP_LIBRARYDIR "${INC_NSCP_LIBRARYDIR}" CACHE PATH "Generic path to all libraries") |
|---|
| 23 | SET(NSCP_INCLUDEDIR "${NSCP_SOURCE_DIR}/include" CACHE PATH "Generic include path (for NSCP include files amongst others)") |
|---|
| 24 | # ### ### ### ### |
|---|
| 25 | # Boost setup |
|---|
| 26 | SET(BOOST_INCLUDEDIR "${INC_BOOST_INCLUDEDIR}" CACHE PATH "Path to boost includes") |
|---|
| 27 | SET(BOOST_LIBRARYDIR "${NSCP_LIBRARYDIR}" CACHE PATH "Path to boost libraries") |
|---|
| 28 | # ### ### ### ### |
|---|
| 29 | # Open SSL |
|---|
| 30 | SET(OPENSSL_INCLUDE_DIR "${INC_OPENSSL_INCLUDEDIR}" CACHE PATH "Path to openssl includes") |
|---|
| 31 | SET(OPENSSL_LIBRARY_DIR "${NSCP_LIBRARYDIR}" CACHE PATH "Path to openssl libraries") |
|---|
| 32 | # ### ### ### ### |
|---|
| 33 | # Google Protocol buffer |
|---|
| 34 | SET(PROTOBUF_DIR "${INC_PROTOBUF_DIR}" CACHE PATH "Path to google protocol buffer root") |
|---|
| 35 | IF(WIN32 AND MSVC) |
|---|
| 36 | SET(PROTOBUF_INCLUDE_DIR "${PROTOBUF_DIR}/src") |
|---|
| 37 | SET(PROTOBUF_LIBRARYDIR "${INC_PROTOBUF_LIBRARYDIR}") |
|---|
| 38 | SET(PROTOBUF_LIBRARY_PREFIX "") |
|---|
| 39 | SET(PROTOBUF_LIBRARY_PREFIX_DEBUG "debug-") |
|---|
| 40 | SET(PROTOBUF_BINARYDIR "${PROTOBUF_DIR}/vsprojects/debug") |
|---|
| 41 | ELSE(WIN32 AND MSVC) |
|---|
| 42 | # TODO |
|---|
| 43 | ENDIF(WIN32 AND MSVC) |
|---|
| 44 | |
|---|
| 45 | |
|---|
| 46 | # ### ### ### ### |
|---|
| 47 | # Crypto++ |
|---|
| 48 | SET(CRYPTOPP_DIR "${INC_CRYPTOPP_DIR}" CACHE PATH "Path to crypto++ root folder") |
|---|
| 49 | # ### ### ### ### |
|---|
| 50 | # Lua |
|---|
| 51 | FIND_PATH(LUA_INCLUE_DIR lua.h |
|---|
| 52 | ${INC_LUA_DIR} |
|---|
| 53 | ${INC_LUA_DIR}/src |
|---|
| 54 | ${LUA_DIR} |
|---|
| 55 | ${LUA_DIR}/src |
|---|
| 56 | /usr/include/lua |
|---|
| 57 | ) |
|---|
| 58 | # ### ### ### ### |
|---|
| 59 | # Google breakpad |
|---|
| 60 | SET(GOOGLE_BREAKPAD_DIR "${INC_GOOGLE_BREAKPAD_DIR}" CACHE PATH "Path to google protocol breakpad root") |
|---|
| 61 | IF(WIN32 AND MSVC) |
|---|
| 62 | SET(BREAKPAD_LIBRARY_PREFIX "google-breakpad-") |
|---|
| 63 | SET(BREAKPAD_LIBRARY_PREFIX_DEBUG "debug-google-breakpad-") |
|---|
| 64 | SET(BREAKPAD_INCLUDE_DIR "${GOOGLE_BREAKPAD_DIR}/src") |
|---|
| 65 | ELSE(WIN32 AND MSVC) |
|---|
| 66 | # TODO |
|---|
| 67 | ENDIF(WIN32 AND MSVC) |
|---|
| 68 | |
|---|
| 69 | # ### ### ### ### |
|---|
| 70 | # Build related paths |
|---|
| 71 | SET(BUILD_PYTHON_FOLDER "${CMAKE_SOURCE_DIR}/build/python") |
|---|
| 72 | SET(BUILD_CMAKE_FOLDER "${CMAKE_SOURCE_DIR}/build/cmake") |
|---|
| 73 | |
|---|
| 74 | SET(MODULE_SUBFOLDER "modules") |
|---|
| 75 | |
|---|
| 76 | SET(BUILD_TARGET_EXE_PATH "${PROJECT_BINARY_DIR}") |
|---|
| 77 | SET(BUILD_TARGET_LIB_PATH "${BUILD_TARGET_EXE_PATH}/${MODULE_SUBFOLDER}") |
|---|
| 78 | SET(BUILD_TARGET_INSTLIB_PATH "${BUILD_TARGET_EXE_PATH}/installer-dlls") |
|---|
| 79 | |
|---|
| 80 | # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### |
|---|
| 81 | |
|---|
| 82 | if (WIN32) |
|---|
| 83 | include(${BUILD_CMAKE_FOLDER}/wix.cmake) |
|---|
| 84 | endif(WIN32) |
|---|
| 85 | |
|---|
| 86 | INCLUDE(${BUILD_CMAKE_FOLDER}/SetMultiThread.cmake) |
|---|
| 87 | INCLUDE(${BUILD_CMAKE_FOLDER}/NSCPPBuffer.cmake) |
|---|
| 88 | INCLUDE(${BUILD_CMAKE_FOLDER}/functions.cmake) |
|---|
| 89 | |
|---|
| 90 | |
|---|
| 91 | FIND_PACKAGE(PythonInterpEx) |
|---|
| 92 | FIND_PACKAGE(PythonLibsEx) |
|---|
| 93 | IF (NOT PYTHONINTERP_FOUND) |
|---|
| 94 | MESSAGE(FATAL_ERROR "Could not find python which is required for building") |
|---|
| 95 | ELSE (NOT PYTHONINTERP_FOUND) |
|---|
| 96 | message(STATUS "Found python in: ${PYTHON_EXECUTABLE}") |
|---|
| 97 | ENDIF (NOT PYTHONINTERP_FOUND) |
|---|
| 98 | IF (PYTHONLIBSEX_FOUND) |
|---|
| 99 | MESSAGE(STATUS "Found python (lib) in: ${PYTHON_LIBRARY}") |
|---|
| 100 | ENDIF (PYTHONLIBSEX_FOUND) |
|---|
| 101 | |
|---|
| 102 | |
|---|
| 103 | SET(VERSION_TXT ${CMAKE_CURRENT_SOURCE_DIR}/version.txt) |
|---|
| 104 | IF("${INCREASE_BUILD}" STREQUAL "1") |
|---|
| 105 | EXECUTE_PROCESS( |
|---|
| 106 | COMMAND ${PYTHON_EXECUTABLE} |
|---|
| 107 | "${BUILD_PYTHON_FOLDER}/version.py" |
|---|
| 108 | --file ${VERSION_TXT} |
|---|
| 109 | --display |
|---|
| 110 | --update build |
|---|
| 111 | --generate-hpp ${CMAKE_CURRENT_SOURCE_DIR}/version.hpp |
|---|
| 112 | OUTPUT_VARIABLE TMP_VERSION_OUT |
|---|
| 113 | ) |
|---|
| 114 | MESSAGE(STATUS "===================== Bumping version") |
|---|
| 115 | ENDIF("${INCREASE_BUILD}" STREQUAL "1") |
|---|
| 116 | |
|---|
| 117 | EXECUTE_PROCESS( |
|---|
| 118 | COMMAND ${PYTHON_EXECUTABLE} |
|---|
| 119 | "${BUILD_PYTHON_FOLDER}/version.py" |
|---|
| 120 | --file ${VERSION_TXT} |
|---|
| 121 | --display |
|---|
| 122 | --generate-hpp ${CMAKE_CURRENT_SOURCE_DIR}/version.hpp |
|---|
| 123 | OUTPUT_VARIABLE TMP_VERSION_OUT |
|---|
| 124 | ) |
|---|
| 125 | |
|---|
| 126 | IF(TMP_VERSION_OUT STREQUAL "") |
|---|
| 127 | MESSAGE(FATA_ERROR, "Failed to generate version from: ${PYTHON_EXECUTABLE} ${BUILD_PYTHON_FOLDER}/version.py --file ${VERSION_TXT} --display ") |
|---|
| 128 | ENDIF(TMP_VERSION_OUT STREQUAL "") |
|---|
| 129 | STRING(REGEX REPLACE ".*([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+).*" "\\1" VERSION_SERIES ${TMP_VERSION_OUT}) |
|---|
| 130 | STRING(REGEX REPLACE ".*([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+).*" "\\2" VERSION_MAJOR ${TMP_VERSION_OUT}) |
|---|
| 131 | STRING(REGEX REPLACE ".*([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+).*" "\\3" VERSION_MINOR ${TMP_VERSION_OUT}) |
|---|
| 132 | STRING(REGEX REPLACE ".*([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+).*" "\\4" VERSION_BUILD ${TMP_VERSION_OUT}) |
|---|
| 133 | MESSAGE(STATUS "Version: ${VERSION_SERIES}.${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}") |
|---|
| 134 | IF(WIN32) |
|---|
| 135 | SET(VERSION_ARCH Win32) |
|---|
| 136 | IF(CMAKE_CL_64) |
|---|
| 137 | SET(VERSION_ARCH x64) |
|---|
| 138 | ENDIF(CMAKE_CL_64) |
|---|
| 139 | ELSE(WIN32) |
|---|
| 140 | SET(VERSION_ARCH Unknown) |
|---|
| 141 | ENDIF(WIN32) |
|---|
| 142 | |
|---|
| 143 | |
|---|
| 144 | SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "NSClient++") |
|---|
| 145 | SET(CPACK_PACKAGE_VENDOR "nsclient.org") |
|---|
| 146 | #SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/docs/readme.txt") |
|---|
| 147 | #SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/Copyright.txt") |
|---|
| 148 | |
|---|
| 149 | SET(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_SERIES}.${VERSION_MAJOR}") |
|---|
| 150 | SET(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR}) |
|---|
| 151 | SET(CPACK_PACKAGE_VERSION_PATCH ${VERSION_BUILD}) |
|---|
| 152 | |
|---|
| 153 | SET(CPACK_PACKAGE_INSTALL_DIRECTORY "CMake ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}") |
|---|
| 154 | IF(WIN32 AND NOT UNIX) |
|---|
| 155 | SET(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 0) |
|---|
| 156 | SET(CPACK_GENERATOR ZIP) |
|---|
| 157 | ELSE(WIN32 AND NOT UNIX) |
|---|
| 158 | SET(CPACK_STRIP_FILES "bin/MyExecutable") |
|---|
| 159 | SET(CPACK_SOURCE_STRIP_FILES "") |
|---|
| 160 | SET(CPACK_PACKAGE_EXECUTABLES "nscp") |
|---|
| 161 | ENDIF(WIN32 AND NOT UNIX) |
|---|
| 162 | INCLUDE(CPack) |
|---|
| 163 | |
|---|
| 164 | |
|---|
| 165 | |
|---|
| 166 | INCLUDE_DIRECTORIES(${NSCP_INCLUDEDIR} ${CMAKE_CURRENT_BINARY_DIR}/libs) |
|---|
| 167 | SET(CMAKE_LIBRARY_PATH "${CMAKE_LIBRARY_PATH};${OPENSSL_LIBRARY_DIR};${NSCP_LIBRARYDIR};${BOOST_LIBRARYDIR}") |
|---|
| 168 | |
|---|
| 169 | SET_MULTITHREAD() |
|---|
| 170 | |
|---|
| 171 | IF(NOT SHARED_LIBS) |
|---|
| 172 | IF(WIN32) |
|---|
| 173 | OPTION(SHARED_LIBS "Compile shared libraries" OFF) |
|---|
| 174 | ELSE(WIN32) |
|---|
| 175 | OPTION(SHARED_LIBS "Compile shared libraries" ON) |
|---|
| 176 | ENDIF(WIN32) |
|---|
| 177 | ENDIF(NOT SHARED_LIBS) |
|---|
| 178 | |
|---|
| 179 | IF(NOT SHARED_LIBS) |
|---|
| 180 | SET(NSCP_STATIC true) |
|---|
| 181 | ENDIF(NOT SHARED_LIBS) |
|---|
| 182 | |
|---|
| 183 | IF(NOT MULTI_THREADED) |
|---|
| 184 | OPTION(MULTI_THREADED "Build multi-threaded httpd deamon (if possible)" ON) |
|---|
| 185 | ENDIF(NOT MULTI_THREADED) |
|---|
| 186 | |
|---|
| 187 | |
|---|
| 188 | IF(WIN32) |
|---|
| 189 | SET(LIB_INSTALL_DIR "lib" CACHE STRING "Default path for libraries within ${CMAKE_INSTALL_PREFIX}") |
|---|
| 190 | SET(RUNDIR "c:/nscp" CACHE PATH "Not really used in WIN32") |
|---|
| 191 | ELSE(WIN32) |
|---|
| 192 | SET(USERLIB_ROOT /usr CACHE PATH "Other installation prefix for dependent libraries") |
|---|
| 193 | SET(LIB_INSTALL_DIR "lib" CACHE STRING "Default path for libraries within ${CMAKE_INSTALL_PREFIX}") |
|---|
| 194 | SET(RUNDIR "/usr/wt/run" CACHE PATH "Default path for wt session management (only used by FCGI connector; not relative to CMAKE_INSTALL_PREFIX)") |
|---|
| 195 | SET(CONFIGURATION /etc/nscp/boot.ini CACHE PATH "Path to the boot configuration file") |
|---|
| 196 | SET(MAIN_CONFIGURATION /etc/nscp/nscp.xml CACHE PATH "Path for the client configurtion file") |
|---|
| 197 | SET(DEPLOYROOT /usr/bin CACHE PATH "Path to deploy examples into)") |
|---|
| 198 | ENDIF(WIN32) |
|---|
| 199 | |
|---|
| 200 | FIND_PACKAGE(GoogleBreakpad COMPONENTS common exception_handler crash_report_sender crash_generation_client) |
|---|
| 201 | if(BREAKPAD_FOUND) |
|---|
| 202 | MESSAGE(STATUS "Found google breakpad") |
|---|
| 203 | SET(NSCP_GLOBAL_DEFINES ${NSCP_GLOBAL_DEFINES} -DUSE_BREAK_PAD -DBOOST_FILESYSTEM_VERSION=2) |
|---|
| 204 | INCLUDE_DIRECTORIES("${BREAKPAD_INCLUDE_DIR}") |
|---|
| 205 | else(BREAKPAD_FOUND) |
|---|
| 206 | MESSAGE(WARNING "Breakpad was not found in: ${BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR}/${BREAKPAD_EXCEPTION_HANDLER_LIBRARIES}") |
|---|
| 207 | endif(BREAKPAD_FOUND) |
|---|
| 208 | |
|---|
| 209 | FIND_PACKAGE(OpenSSL) |
|---|
| 210 | if(OPENSSL_FOUND) |
|---|
| 211 | MESSAGE(STATUS "Found OpenSSL: ${OPENSSL_INCLUDE_DIR}") |
|---|
| 212 | SET(NSCP_GLOBAL_DEFINES ${NSCP_GLOBAL_DEFINES} -DUSE_SSL) |
|---|
| 213 | else(OPENSSL_FOUND) |
|---|
| 214 | MESSAGE(WARNING " OpenSSL NOT found (no ssl support, ${OPENSSL_INCLUDE_DIR})") |
|---|
| 215 | endif(OPENSSL_FOUND) |
|---|
| 216 | |
|---|
| 217 | FIND_PACKAGE(Boost COMPONENTS system filesystem thread regex date_time program_options python REQUIRED) |
|---|
| 218 | if(Boost_FOUND) |
|---|
| 219 | MESSAGE(STATUS "Found boost in: ${Boost_INCLUDE_DIRS} / ${Boost_LIBRARY_DIRS}") |
|---|
| 220 | # Boost is used nearly everywhere, so we can put these here |
|---|
| 221 | INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) |
|---|
| 222 | #LINK_DIRECTORIES(${Boost_LIBRARY_DIRS}) |
|---|
| 223 | IF(WIN32) |
|---|
| 224 | #IF(BOOST_DYNAMIC) |
|---|
| 225 | #ADD_DEFINITIONS(-DBOOST_ALL_DYN_LINK) |
|---|
| 226 | #ENDIF(BOOST_DYNAMIC) |
|---|
| 227 | SET(EXTRA_LIBS ${EXTRA_LIBS} Userenv ole32) |
|---|
| 228 | ENDIF(WIN32) |
|---|
| 229 | else(Boost_FOUND) |
|---|
| 230 | MESSAGE(FATAL_ERROR "boost NOT fround: ${Boost_ERROR_REASON}") |
|---|
| 231 | endif(Boost_FOUND) |
|---|
| 232 | |
|---|
| 233 | if(PROTOBUF_FOUND) |
|---|
| 234 | message(STATUS "Found proto in: ${PROTOBUF_INCLUDE_DIR} / ${PROTOBUF_LIBRARY} (${PROTOBUF_PROTOC_EXECUTABLE})") |
|---|
| 235 | INCLUDE_DIRECTORIES("${PROTOBUF_INCLUDE_DIR}") |
|---|
| 236 | else(PROTOBUF_FOUND) |
|---|
| 237 | message(FATAL_ERROR "Protocol buffers NOT found (${PROTOBUF_LIBRARYDIR})") |
|---|
| 238 | endif(PROTOBUF_FOUND) |
|---|
| 239 | |
|---|
| 240 | IF(WIN32) |
|---|
| 241 | FIND_PATH(PSDK_61_INCLUDE_DIRS Windows.h |
|---|
| 242 | PATHS |
|---|
| 243 | ${INC_PSDK_61} |
|---|
| 244 | ${INC_PSDK_61}/include |
|---|
| 245 | "C:/Program Files/Microsoft SDKs/Windows/v6.1/include" |
|---|
| 246 | NO_DEFAULT_PATH |
|---|
| 247 | ) |
|---|
| 248 | FIND_PATH(PSDK_2003_INCLUDE_DIRS Windows.h |
|---|
| 249 | PATHS |
|---|
| 250 | ${INC_PSDK_2003} |
|---|
| 251 | ${INC_PSDK_2003}/include |
|---|
| 252 | "C:/Program Files/Microsoft Platform SDK/include" |
|---|
| 253 | "C:/Program Files/Microsoft Platform SDK for Windows Server 2003 R2/include" |
|---|
| 254 | NO_DEFAULT_PATH |
|---|
| 255 | ) |
|---|
| 256 | |
|---|
| 257 | if(CMAKE_CL_64) |
|---|
| 258 | FIND_PATH(PSDK_61_LIBRARY_DIRS WSock32.Lib |
|---|
| 259 | PATHS |
|---|
| 260 | ${INC_PSDK_61}/lib/x64 |
|---|
| 261 | "C:/Program Files/Microsoft SDKs/Windows/v6.1/lib/x64" |
|---|
| 262 | ) |
|---|
| 263 | FIND_PATH(PSDK_2003_LIBRARY_DIRS WSock32.Lib |
|---|
| 264 | PATHS |
|---|
| 265 | ${INC_PSDK_2003}/lib/AMD64 |
|---|
| 266 | "C:/Program Files/Microsoft Platform SDK/lib/AMD64" |
|---|
| 267 | "C:/Program Files/Microsoft Platform SDK for Windows Server 2003 R2/lib/AMD64" |
|---|
| 268 | ) |
|---|
| 269 | else(CMAKE_CL_64) |
|---|
| 270 | FIND_PATH(PSDK_61_LIBRARY_DIRS WS2_32.Lib |
|---|
| 271 | PATHS |
|---|
| 272 | ${INC_PSDK_61}/lib |
|---|
| 273 | "C:/Program Files/Microsoft SDKs/Windows/v6.1/lib" |
|---|
| 274 | ) |
|---|
| 275 | FIND_PATH(PSDK_2003_LIBRARY_DIRS WS2_32.Lib |
|---|
| 276 | PATHS |
|---|
| 277 | ${INC_PSDK_2003}/lib |
|---|
| 278 | "C:/Program Files/Microsoft Platform SDK/lib" |
|---|
| 279 | "C:/Program Files/Microsoft Platform SDK for Windows Server 2003 R2/lib" |
|---|
| 280 | ) |
|---|
| 281 | endif(CMAKE_CL_64) |
|---|
| 282 | if(PSDK_61_INCLUDE_DIRS AND PSDK_61_LIBRARY_DIRS) |
|---|
| 283 | SET(PSDK_61_FOUND TRUE) |
|---|
| 284 | message(STATUS "Found PSDK 6.1: ${PSDK_61_INCLUDE_DIRS} (${PSDK_61_LIBRARY_DIRS}) <${INC_PSDK_61}>") |
|---|
| 285 | else() |
|---|
| 286 | SET(PSDK_61_FOUND FALSE) |
|---|
| 287 | message(STATUS "PSDK 6.1 NOT FOUND: ${PSDK_61_INCLUDE_DIRS} (${PSDK_61_LIBRARY_DIRS})") |
|---|
| 288 | endif() |
|---|
| 289 | if(PSDK_2003_INCLUDE_DIRS AND PSDK_2003_LIBRARY_DIRS) |
|---|
| 290 | SET(PSDK_2003_FOUND TRUE) |
|---|
| 291 | message(STATUS "Found PSDK 2003: ${PSDK_2003_INCLUDE_DIRS} (${PSDK_2003_LIBRARY_DIRS})") |
|---|
| 292 | else() |
|---|
| 293 | SET(PSDK_2003_FOUND FALSE) |
|---|
| 294 | message(STATUS "PSDK 2003 NOT FOUND: ${PSDK_2003_INCLUDE_DIRS} (${PSDK_2003_LIBRARY_DIRS})") |
|---|
| 295 | endif() |
|---|
| 296 | endif(WIN32) |
|---|
| 297 | |
|---|
| 298 | #IF(NOT WIN32) |
|---|
| 299 | # FIND_PACKAGE(ICU REQUIRED) |
|---|
| 300 | # IF(NOT ICU_FOUND) |
|---|
| 301 | # MESSAGE(FATAL_ERROR "ICU package not found..") |
|---|
| 302 | # ELSE(NOT ICU_FOUND) |
|---|
| 303 | # ADD_DEFINITIONS( -DSI_CONVERT_ICU ) |
|---|
| 304 | # ENDIF(NOT ICU_FOUND) |
|---|
| 305 | #ENDIF(NOT WIN32) |
|---|
| 306 | |
|---|
| 307 | IF(NOT WIN32) |
|---|
| 308 | FIND_PACKAGE(Threads REQUIRED) |
|---|
| 309 | IF (NOT CMAKE_USE_PTHREADS_INIT) |
|---|
| 310 | message(FATAL_ERROR "Could not find POSIX threads") |
|---|
| 311 | ELSE (NOT CMAKE_USE_PTHREADS_INIT) |
|---|
| 312 | #add_definitions(-D_REENTRANT) |
|---|
| 313 | ENDIF (NOT CMAKE_USE_PTHREADS_INIT) |
|---|
| 314 | FIND_PACKAGE(Threads REQUIRED) |
|---|
| 315 | ENDIF(NOT WIN32) |
|---|
| 316 | |
|---|
| 317 | SET(NSCP_GLOBAL_DEFINES ${NSCP_GLOBAL_DEFINES} -DUNICODE -D_UNICODE -D_WIN32_WINNT=0x0403) |
|---|
| 318 | # TODO: Fix this issue! (crypto++ and masm) |
|---|
| 319 | IF (WIN32) |
|---|
| 320 | SET(NSCP_GLOBAL_DEFINES ${NSCP_GLOBAL_DEFINES} -DCRYPTOPP_DISABLE_ASM -D_CRT_SECURE_NO_WARNINGS) |
|---|
| 321 | ENDIF (WIN32) |
|---|
| 322 | |
|---|
| 323 | |
|---|
| 324 | IF(CMAKE_HOST_UNIX) |
|---|
| 325 | SET(UNIX_FLAVOUR LINUX CACHE STRING "Choose your unix flavour UNIX, AIX, HPUX" FORCE) |
|---|
| 326 | IF(UNIX_FLAVOUR STREQUAL LINUX) |
|---|
| 327 | SET(NSCP_GLOBAL_DEFINES ${NSCP_GLOBAL_DEFINES} -DLINUX) |
|---|
| 328 | ENDIF(UNIX_FLAVOUR STREQUAL LINUX) |
|---|
| 329 | |
|---|
| 330 | SET(EXTRA_LIBS ${EXTRA_LIBS} ${CMAKE_DL_LIBS}) |
|---|
| 331 | ENDIF() |
|---|
| 332 | |
|---|
| 333 | IF(NOT CMAKE_BUILD_TYPE) |
|---|
| 334 | SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING |
|---|
| 335 | "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." |
|---|
| 336 | FORCE) |
|---|
| 337 | ENDIF(NOT CMAKE_BUILD_TYPE) |
|---|
| 338 | |
|---|
| 339 | SET(NSCP_DEF_PLUGIN_CPP |
|---|
| 340 | # ${NSCP_INCLUDEDIR}/arrayBuffer.cpp |
|---|
| 341 | # ${NSCP_INCLUDEDIR}/simpleini/ConvertUTF.c |
|---|
| 342 | # ${NSCP_INCLUDEDIR}/b64/b64.c |
|---|
| 343 | # ${NSCP_INCLUDEDIR}/utils.cpp |
|---|
| 344 | # ${NSCP_INCLUDEDIR}/nscapi/nscapi_helper.cpp |
|---|
| 345 | # ${NSCP_INCLUDEDIR}/nscapi/nscapi_plugin_wrapper.cpp |
|---|
| 346 | # ${NSCP_INCLUDEDIR}/nscapi/nscapi_core_wrapper.cpp |
|---|
| 347 | # ${NSCP_INCLUDEDIR}/settings/client/settings_client.cpp |
|---|
| 348 | ) |
|---|
| 349 | |
|---|
| 350 | SET(NSCP_DEF_PLUGIN_HPP |
|---|
| 351 | ${NSCP_INCLUDEDIR}/strEx.h |
|---|
| 352 | ${NSCP_INCLUDEDIR}/config.h |
|---|
| 353 | ${NSCP_INCLUDEDIR}/utils.h |
|---|
| 354 | ${NSCP_INCLUDEDIR}/NSCAPI.h |
|---|
| 355 | # ${NSCP_INCLUDEDIR}/nscapi/macros.hpp |
|---|
| 356 | ${NSCP_INCLUDEDIR}/nscapi/nscapi_helper.hpp |
|---|
| 357 | ${NSCP_INCLUDEDIR}/nscapi/nscapi_plugin_wrapper.hpp |
|---|
| 358 | ${NSCP_INCLUDEDIR}/nscapi/nscapi_core_wrapper.hpp |
|---|
| 359 | ${NSCP_INCLUDEDIR}/settings/client/settings_client.hpp |
|---|
| 360 | # ${NSCP_INCLUDEDIR}/nscapi/settings_proxy.hpp |
|---|
| 361 | ${NSCP_INCLUDEDIR}/nscapi/macros.hpp |
|---|
| 362 | ${NSCP_INCLUDEDIR}/nscapi/functions.hpp |
|---|
| 363 | ) |
|---|
| 364 | |
|---|
| 365 | SET(NSCP_FILTER_CPP |
|---|
| 366 | ) |
|---|
| 367 | |
|---|
| 368 | SET(NSCP_FILTER_HPP |
|---|
| 369 | ${NSCP_INCLUDEDIR}/parsers/where.hpp |
|---|
| 370 | ${NSCP_INCLUDEDIR}/parsers/filter/where_filter.hpp |
|---|
| 371 | ${NSCP_INCLUDEDIR}/parsers/filter/where_filter_impl.hpp |
|---|
| 372 | ) |
|---|
| 373 | SET(NSCP_FILTER_LIB |
|---|
| 374 | where_filter |
|---|
| 375 | ) |
|---|
| 376 | |
|---|
| 377 | SET(NSCP_DEF_PLUGIN_LIB |
|---|
| 378 | # ${Boost_LIBRARIES} |
|---|
| 379 | ${CMAKE_THREAD_LIBS_INIT} |
|---|
| 380 | ${Boost_PROGRAM_OPTIONS_LIBRARY} |
|---|
| 381 | ${Boost_THREAD_LIBRARY} |
|---|
| 382 | ${Boost_SYSTEM_LIBRARY} |
|---|
| 383 | ${Boost_REGEX_LIBRARY} |
|---|
| 384 | ${Boost_FILESYSTEM_LIBRARY} |
|---|
| 385 | ${EXTRA_LIBS} |
|---|
| 386 | ${PROTOBUF_LIBRARY} |
|---|
| 387 | protobuf |
|---|
| 388 | plugin_api |
|---|
| 389 | ) |
|---|
| 390 | |
|---|
| 391 | message(STATUS "NSCP PLUGIN LIB: ${NSCP_DEF_PLUGIN_LIB}") |
|---|
| 392 | message(STATUS "NSCP PLUGIN CPP: ${NSCP_DEF_PLUGIN_CPP}") |
|---|
| 393 | |
|---|
| 394 | LINK_DIRECTORIES(${CMAKE_LIBRARY_PATH} ${OPENSSL_LIBRARY_DIR} ${NSCP_LIBRARYDIR} ${BOOST_LIBRARYDIR}) |
|---|
| 395 | |
|---|
| 396 | SET(ALL_LIB_NAMES) |
|---|
| 397 | message(STATUS "Adding libraries") |
|---|
| 398 | FILE(GLOB ALL_LIB_PROJECTS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "libs/*/CMakeLists.txt") |
|---|
| 399 | foreach(CURRENT_LIB ${ALL_LIB_PROJECTS}) |
|---|
| 400 | get_filename_component(CURRENT_LIB_PATH ${CURRENT_LIB} PATH) |
|---|
| 401 | get_filename_component(CURRENT_LIB_NAME ${CURRENT_LIB_PATH} NAME) |
|---|
| 402 | message(STATUS " + Library: ${CURRENT_LIB_PATH} (${CURRENT_LIB_NAME})") |
|---|
| 403 | ADD_SUBDIRECTORY("${CURRENT_LIB_PATH}") |
|---|
| 404 | SET(ALL_LIB_NAMES ${ALL_LIB_NAMES} ${CURRENT_LIB_NAME}) |
|---|
| 405 | endforeach(CURRENT_LIB ${ALL_LIB_PROJECTS}) |
|---|
| 406 | |
|---|
| 407 | # Compile time constants & make sure our build finds it |
|---|
| 408 | CONFIGURE_FILE( |
|---|
| 409 | ${NSCP_INCLUDEDIR}/config.h.in |
|---|
| 410 | ${NSCP_INCLUDEDIR}/config.h |
|---|
| 411 | @ONLY |
|---|
| 412 | ) |
|---|
| 413 | INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) |
|---|
| 414 | INCLUDE_DIRECTORIES(${NSCP_LOCAL_INCLUDE_PATH}) |
|---|
| 415 | INSTALL_FILES(/include FILES ${WCONFIG_H_PATH}) |
|---|
| 416 | |
|---|
| 417 | add_definitions(-DUNICODE -D_UNICODE) |
|---|
| 418 | |
|---|
| 419 | include_directories("${PROJECT_BINARY_DIR}") |
|---|
| 420 | |
|---|
| 421 | MESSAGE(STATUS "Build path: ${PROJECT_BINARY_DIR}") |
|---|
| 422 | SET(NSCP_PROJECT_BINARY_DIR ${PROJECT_BINARY_DIR}) |
|---|
| 423 | ADD_SUBDIRECTORY("helpers/settings_manager") |
|---|
| 424 | ADD_SUBDIRECTORY("helpers/where_filter") |
|---|
| 425 | ADD_SUBDIRECTORY("service") |
|---|
| 426 | SET(MAIN_NSCP_TARGET "nscp") |
|---|
| 427 | MESSAGE(STATUS "NSCP Target: ${MAIN_NSCP_TARGET}") |
|---|
| 428 | |
|---|
| 429 | ADD_SUBDIRECTORY("scripts") |
|---|
| 430 | ADD_SUBDIRECTORY("files") |
|---|
| 431 | ADD_SUBDIRECTORY("docs") |
|---|
| 432 | |
|---|
| 433 | LOAD_SECTIONS(ALL_MODULE_NAMES "modules/*/module.cmake" "Modules") |
|---|
| 434 | LOAD_SECTIONS(ALL_TOOL_NAMES "tools/*/module.cmake" "Tools") |
|---|
| 435 | LOAD_SECTIONS(ALL_INSTALLERS_DLLS_NAMES "helpers/installer-dlls/*/module.cmake" "Installer DLLs") |
|---|
| 436 | |
|---|
| 437 | LOAD_SECTIONS(ALL_INSTALLERS_NAMES "helpers/installers/*/module.cmake" "Installers") |
|---|
| 438 | |
|---|
| 439 | SET_TARGET_PROPERTIES(${MAIN_NSCP_TARGET} ${ALL_MODULE_NAMES} ${ALL_TOOL_NAMES} PROPERTIES |
|---|
| 440 | RUNTIME_OUTPUT_DIRECTORY "${BUILD_TARGET_EXE_PATH}" |
|---|
| 441 | LIBRARY_OUTPUT_DIRECTORY "${BUILD_TARGET_LIB_PATH}" |
|---|
| 442 | MODULE_OUTPUT_DIRECTORY "${BUILD_TARGET_LIB_PATH}" |
|---|
| 443 | COMPILE_DEFINITIONS_DEBUG _DEBUG |
|---|
| 444 | ) |
|---|
| 445 | |
|---|
| 446 | SET_TARGET_PROPERTIES(${ALL_INSTALLERS_DLLS_NAMES} PROPERTIES |
|---|
| 447 | RUNTIME_OUTPUT_DIRECTORY "${BUILD_TARGET_EXE_PATH}" |
|---|
| 448 | LIBRARY_OUTPUT_DIRECTORY "${BUILD_TARGET_INSTLIB_PATH}" |
|---|
| 449 | MODULE_OUTPUT_DIRECTORY "${BUILD_TARGET_INSTLIB_PATH}" |
|---|
| 450 | COMPILE_DEFINITIONS_DEBUG _DEBUG |
|---|
| 451 | ) |
|---|
| 452 | |
|---|
| 453 | if (MSVC_IDE) |
|---|
| 454 | # hack to get around the "Debug" and "Release" directories cmake tries to add on Windows |
|---|
| 455 | set_target_properties(${MAIN_NSCP_TARGET} ${ALL_MODULE_NAMES} ${ALL_TOOL_NAMES} ${ALL_INSTALLERS_DLLS_NAMES} PROPERTIES PREFIX "../") |
|---|
| 456 | endif() |
|---|
| 457 | |
|---|
| 458 | IF(CMAKE_COMPILER_IS_GNUCXX) |
|---|
| 459 | IF("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64" AND NOT APPLE) |
|---|
| 460 | SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fPIC" ) |
|---|
| 461 | SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fPIC" ) |
|---|
| 462 | ENDIF("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64" AND NOT APPLE) |
|---|
| 463 | ENDIF(CMAKE_COMPILER_IS_GNUCXX) |
|---|
| 464 | |
|---|
| 465 | CONFIGURE_FILE( |
|---|
| 466 | ${BUILD_PYTHON_FOLDER}/postbuild.py |
|---|
| 467 | ${BUILD_TARGET_EXE_PATH}/postbuild.py |
|---|
| 468 | ) |
|---|
| 469 | CONFIGURE_FILE( |
|---|
| 470 | ${BUILD_PYTHON_FOLDER}/config.py |
|---|
| 471 | ${BUILD_TARGET_EXE_PATH}/config.py |
|---|
| 472 | ) |
|---|