source: nscp/CMakeLists.txt @ c6a974c

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