source: nscp/CMakeLists.txt @ c3f233d

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