source: nscp/CMakeLists.txt @ 92c4b5b

0.4.00.4.10.4.2
Last change on this file since 92c4b5b was 92c4b5b, checked in by Michael Medin <michael@…>, 4 years ago

tidied up the build process a bit

  • Property mode set to 100644
File size: 4.7 KB
Line 
1cmake_minimum_required(VERSION 2.6)
2
3include(build.cmake)
4       
5PROJECT(NSCP)
6
7SET(VERSION_SERIES 0)
8SET(VERSION_MAJOR 4)
9SET(VERSION_MINOR 0)
10
11IF(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)
17ENDIF(NOT SHARED_LIBS)
18
19IF(NOT SHARED_LIBS)
20  SET(NSCP_STATIC true)
21ENDIF(NOT SHARED_LIBS)
22
23IF(NOT MULTI_THREADED)
24  OPTION(MULTI_THREADED "Build multi-threaded httpd deamon (if possible)" ON)
25ENDIF(NOT MULTI_THREADED)
26
27SET(NSCP_INCLUDE_PATH "${NSCP_SOURCE_DIR}/include" CACHE PATH "directory containing NSCP specific includes")
28INCLUDE_DIRECTORIES(${NSCP_INCLUDE_PATH})
29
30SET(BOOST_LIBRARYDIR ${BOOST_LIBRARYDIR} CACHE PATH "")
31SET(BOOST_INCLUDEDIR ${BOOST_INCLUDEDIR} CACHE PATH "")
32SET(BOOST_LIB_SUFFIX ${BOOST_LIB_SUFFIX} CACHE STRING "Look for Boost libraries ending with this")
33
34IF(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
42ELSE(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)")
49ENDIF(WIN32)
50
51FIND_PACKAGE(Boost COMPONENTS system filesystem thread REQUIRED)
52
53if(Boost_FOUND)
54        message(STATUS, "Found boost in: ${Boost_INCLUDE_DIRS}")
55else(Boost_FOUND)
56        message(FATAL_ERROR, "boost NOT fround: ${Boost_ERROR_REASON}")
57endif(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
74IF(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)
82ENDIF(NOT WIN32)
83
84
85SET(NSCP_GLOBAL_DEFINES
86        -DUNICODE -D_UNICODE
87)
88
89IF(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})
96ENDIF()
97
98# Boost is used nearly everywhere, so we can put these here
99INCLUDE_DIRECTORIES(${BOOST_INCLUDE_DIRS})
100LINK_DIRECTORIES(${BOOST_LIB_DIRS})
101IF(WIN32)
102  IF(BOOST_DYNAMIC)
103    ADD_DEFINITIONS(-DBOOST_ALL_DYN_LINK)
104  ENDIF(BOOST_DYNAMIC)
105  set (EXTRA_LIBS ${EXTRA_LIBS} Userenv ole32)
106ENDIF(WIN32)
107
108IF(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)
112ENDIF(NOT CMAKE_BUILD_TYPE)
113
114# Compile time constants & make sure our build finds it
115CONFIGURE_FILE(
116  ${NSCP_INCLUDE_PATH}/config.h.in
117  ${NSCP_INCLUDE_PATH}/config.h
118)
119INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
120INCLUDE_DIRECTORIES(${NSCP_LOCAL_INCLUDE_PATH})
121INSTALL_FILES(/include FILES ${WCONFIG_H_PATH})
122
123add_definitions(-DUNICODE -D_UNICODE)
124
125include_directories("${PROJECT_BINARY_DIR}")
126
127MESSAGE(STATUS "Build path: ${PROJECT_BINARY_DIR}")
128ADD_SUBDIRECTORY("service")
129
130FILE(GLOB ALL_MODULES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "modules/*/CMakeLists.txt")
131foreach(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}")
135endforeach(CURRENT_MODULE ${ALL_MODULES})
136
137
138SET_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
145if (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 "../")
148endif()
Note: See TracBrowser for help on using the repository browser.