| 1 | cmake_minimum_required(VERSION 2.6) |
|---|
| 2 | |
|---|
| 3 | include(build.cmake) |
|---|
| 4 | |
|---|
| 5 | PROJECT(NSCP) |
|---|
| 6 | |
|---|
| 7 | SET(VERSION_SERIES 0) |
|---|
| 8 | SET(VERSION_MAJOR 4) |
|---|
| 9 | SET(VERSION_MINOR 0) |
|---|
| 10 | |
|---|
| 11 | IF(NOT SHARED_LIBS) |
|---|
| 12 | IF(WIN32) |
|---|
| 13 | OPTION(SHARED_LIBS "Compile shared libraries" OFF) |
|---|
| 14 | ELSE(WIN32) |
|---|
| 15 | OPTION(SHARED_LIBS "Compile shared libraries" ON) |
|---|
| 16 | ENDIF(WIN32) |
|---|
| 17 | ENDIF(NOT SHARED_LIBS) |
|---|
| 18 | |
|---|
| 19 | IF(NOT SHARED_LIBS) |
|---|
| 20 | SET(NSCP_STATIC true) |
|---|
| 21 | ENDIF(NOT SHARED_LIBS) |
|---|
| 22 | |
|---|
| 23 | IF(NOT MULTI_THREADED) |
|---|
| 24 | OPTION(MULTI_THREADED "Build multi-threaded httpd deamon (if possible)" ON) |
|---|
| 25 | ENDIF(NOT MULTI_THREADED) |
|---|
| 26 | |
|---|
| 27 | SET(NSCP_INCLUDE_PATH "${NSCP_SOURCE_DIR}/include" CACHE PATH "directory containing NSCP specific includes") |
|---|
| 28 | INCLUDE_DIRECTORIES(${NSCP_INCLUDE_PATH}) |
|---|
| 29 | |
|---|
| 30 | SET(BOOST_LIBRARYDIR ${BOOST_LIBRARYDIR} CACHE PATH "") |
|---|
| 31 | SET(BOOST_INCLUDEDIR ${BOOST_INCLUDEDIR} CACHE PATH "") |
|---|
| 32 | SET(BOOST_LIB_SUFFIX ${BOOST_LIB_SUFFIX} CACHE STRING "Look for Boost libraries ending with this") |
|---|
| 33 | |
|---|
| 34 | IF(WIN32) |
|---|
| 35 | SET(LIB_INSTALL_DIR "lib" CACHE STRING "Default path for libraries within ${CMAKE_INSTALL_PREFIX}") |
|---|
| 36 | SET(RUNDIR "c:/nscp" CACHE PATH "Not really used in WIN32") |
|---|
| 37 | |
|---|
| 38 | |
|---|
| 39 | #SET(BOOST_VERSION "1_34_1" CACHE STRING "Use boost version in BOOST_DIR") |
|---|
| 40 | #OPTION(BOOST_DYNAMIC "Link to boost DLLs (OFF means static link)" OFF) |
|---|
| 41 | |
|---|
| 42 | ELSE(WIN32) |
|---|
| 43 | SET(USERLIB_ROOT /usr CACHE PATH "Other installation prefix for dependent libraries") |
|---|
| 44 | SET(LIB_INSTALL_DIR "lib" CACHE STRING "Default path for libraries within ${CMAKE_INSTALL_PREFIX}") |
|---|
| 45 | SET(RUNDIR "/usr/wt/run" CACHE PATH "Default path for wt session management (only used by FCGI connector; not relative to CMAKE_INSTALL_PREFIX)") |
|---|
| 46 | SET(CONFIGURATION /etc/nscp/boot.ini CACHE PATH "Path to the boot configuration file") |
|---|
| 47 | SET(MAIN_CONFIGURATION /etc/nscp/nscp.xml CACHE PATH "Path for the client configurtion file") |
|---|
| 48 | SET(DEPLOYROOT /usr/bin CACHE PATH "Path to deploy examples into)") |
|---|
| 49 | ENDIF(WIN32) |
|---|
| 50 | |
|---|
| 51 | FIND_PACKAGE(Boost COMPONENTS system filesystem thread REQUIRED) |
|---|
| 52 | |
|---|
| 53 | if(Boost_FOUND) |
|---|
| 54 | message(STATUS, "Found boost in: ${Boost_INCLUDE_DIRS}") |
|---|
| 55 | else(Boost_FOUND) |
|---|
| 56 | message(FATAL_ERROR, "boost NOT fround: ${Boost_ERROR_REASON}") |
|---|
| 57 | endif(Boost_FOUND) |
|---|
| 58 | |
|---|
| 59 | #INCLUDE(cmake/WtFindAsio.txt) |
|---|
| 60 | #INCLUDE(cmake/WtFindSsl.txt) |
|---|
| 61 | #INCLUDE(cmake/FindICU.cmake) |
|---|
| 62 | |
|---|
| 63 | |
|---|
| 64 | |
|---|
| 65 | #IF(NOT WIN32) |
|---|
| 66 | # FIND_PACKAGE(ICU REQUIRED) |
|---|
| 67 | # IF(NOT ICU_FOUND) |
|---|
| 68 | # MESSAGE(FATAL_ERROR "ICU package not found..") |
|---|
| 69 | # ELSE(NOT ICU_FOUND) |
|---|
| 70 | # ADD_DEFINITIONS( -DSI_CONVERT_ICU ) |
|---|
| 71 | # ENDIF(NOT ICU_FOUND) |
|---|
| 72 | #ENDIF(NOT WIN32) |
|---|
| 73 | |
|---|
| 74 | IF(NOT WIN32) |
|---|
| 75 | FIND_PACKAGE(Threads REQUIRED) |
|---|
| 76 | IF (NOT CMAKE_USE_PTHREADS_INIT) |
|---|
| 77 | message(FATAL_ERROR "Could not find POSIX threads") |
|---|
| 78 | ELSE (NOT CMAKE_USE_PTHREADS_INIT) |
|---|
| 79 | #add_definitions(-D_REENTRANT) |
|---|
| 80 | ENDIF (NOT CMAKE_USE_PTHREADS_INIT) |
|---|
| 81 | FIND_PACKAGE(Threads REQUIRED) |
|---|
| 82 | ENDIF(NOT WIN32) |
|---|
| 83 | |
|---|
| 84 | |
|---|
| 85 | SET(NSCP_GLOBAL_DEFINES |
|---|
| 86 | -DUNICODE -D_UNICODE |
|---|
| 87 | ) |
|---|
| 88 | |
|---|
| 89 | IF(CMAKE_HOST_UNIX) |
|---|
| 90 | SET(UNIX_FLAVOUR LINUX CACHE STRING "Choose your unix flavour UNIX, AIX, HPUX" FORCE) |
|---|
| 91 | IF(UNIX_FLAVOUR STREQUAL LINUX) |
|---|
| 92 | SET(NSCP_GLOBAL_DEFINES ${NSCP_GLOBAL_DEFINES} -DLINUX) |
|---|
| 93 | ENDIF(UNIX_FLAVOUR STREQUAL LINUX) |
|---|
| 94 | |
|---|
| 95 | SET(EXTRA_LIBS ${EXTRA_LIBS} ${CMAKE_DL_LIBS}) |
|---|
| 96 | ENDIF() |
|---|
| 97 | |
|---|
| 98 | # Boost is used nearly everywhere, so we can put these here |
|---|
| 99 | INCLUDE_DIRECTORIES(${BOOST_INCLUDE_DIRS}) |
|---|
| 100 | LINK_DIRECTORIES(${BOOST_LIB_DIRS}) |
|---|
| 101 | IF(WIN32) |
|---|
| 102 | IF(BOOST_DYNAMIC) |
|---|
| 103 | ADD_DEFINITIONS(-DBOOST_ALL_DYN_LINK) |
|---|
| 104 | ENDIF(BOOST_DYNAMIC) |
|---|
| 105 | set (EXTRA_LIBS ${EXTRA_LIBS} Userenv ole32) |
|---|
| 106 | ENDIF(WIN32) |
|---|
| 107 | |
|---|
| 108 | IF(NOT CMAKE_BUILD_TYPE) |
|---|
| 109 | SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING |
|---|
| 110 | "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." |
|---|
| 111 | FORCE) |
|---|
| 112 | ENDIF(NOT CMAKE_BUILD_TYPE) |
|---|
| 113 | |
|---|
| 114 | # Compile time constants & make sure our build finds it |
|---|
| 115 | CONFIGURE_FILE( |
|---|
| 116 | ${NSCP_INCLUDE_PATH}/config.h.in |
|---|
| 117 | ${NSCP_INCLUDE_PATH}/config.h |
|---|
| 118 | ) |
|---|
| 119 | INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) |
|---|
| 120 | INCLUDE_DIRECTORIES(${NSCP_LOCAL_INCLUDE_PATH}) |
|---|
| 121 | INSTALL_FILES(/include FILES ${WCONFIG_H_PATH}) |
|---|
| 122 | |
|---|
| 123 | add_definitions(-DUNICODE -D_UNICODE) |
|---|
| 124 | |
|---|
| 125 | include_directories("${PROJECT_BINARY_DIR}") |
|---|
| 126 | |
|---|
| 127 | MESSAGE(STATUS "Build path: ${PROJECT_BINARY_DIR}") |
|---|
| 128 | ADD_SUBDIRECTORY("service") |
|---|
| 129 | |
|---|
| 130 | FILE(GLOB ALL_MODULES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "modules/*/CMakeLists.txt") |
|---|
| 131 | foreach(CURRENT_MODULE ${ALL_MODULES}) |
|---|
| 132 | get_filename_component(CURRENT_MODULE_PATH ${CURRENT_MODULE} PATH) |
|---|
| 133 | message(STATUS "Adding module: ${CURRENT_MODULE_PATH}") |
|---|
| 134 | ADD_SUBDIRECTORY("${CURRENT_MODULE_PATH}") |
|---|
| 135 | endforeach(CURRENT_MODULE ${ALL_MODULES}) |
|---|
| 136 | |
|---|
| 137 | |
|---|
| 138 | SET_TARGET_PROPERTIES("nsclient++" "CheckHelpers" PROPERTIES |
|---|
| 139 | RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}" |
|---|
| 140 | LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/modules" |
|---|
| 141 | MODULE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/modules" |
|---|
| 142 | COMPILE_DEFINITIONS_DEBUG _DEBUG |
|---|
| 143 | ) |
|---|
| 144 | |
|---|
| 145 | if (MSVC_IDE) |
|---|
| 146 | # hack to get around the "Debug" and "Release" directories cmake tries to add on Windows |
|---|
| 147 | set_target_properties ("nsclient++" "CheckHelpers" PROPERTIES PREFIX "../") |
|---|
| 148 | endif() |
|---|