source: nscp/CMakeLists.txt @ 438998b

0.4.00.4.10.4.2
Last change on this file since 438998b was afd42f1, checked in by Michael Medin <michael@…>, 22 months ago

removed protobuf/log.proto.h and moved alll includes to target dir instead...

  • Property mode set to 100644
File size: 16.0 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)
44
45
46# ### ### ### ###
47# Crypto++
48SET(CRYPTOPP_DIR "${INC_CRYPTOPP_DIR}" CACHE PATH "Path to crypto++ root folder")
49# ### ### ### ###
50# Lua
51FIND_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
60SET(GOOGLE_BREAKPAD_DIR "${INC_GOOGLE_BREAKPAD_DIR}" CACHE PATH "Path to google protocol breakpad root")
61IF(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")
65ELSE(WIN32 AND MSVC)
66# TODO
67ENDIF(WIN32 AND MSVC)
68
69# ### ### ### ###
70# Build related paths
71SET(BUILD_PYTHON_FOLDER "${CMAKE_SOURCE_DIR}/build/python")
72SET(BUILD_CMAKE_FOLDER "${CMAKE_SOURCE_DIR}/build/cmake")
73
74SET(MODULE_SUBFOLDER "modules")
75
76SET(BUILD_TARGET_EXE_PATH "${PROJECT_BINARY_DIR}")
77SET(BUILD_TARGET_LIB_PATH "${BUILD_TARGET_EXE_PATH}/${MODULE_SUBFOLDER}")
78SET(BUILD_TARGET_INSTLIB_PATH "${BUILD_TARGET_EXE_PATH}/installer-dlls")
79
80# ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ###
81
82if (WIN32)
83    include(${BUILD_CMAKE_FOLDER}/wix.cmake)
84endif(WIN32)
85
86INCLUDE(${BUILD_CMAKE_FOLDER}/SetMultiThread.cmake)
87INCLUDE(${BUILD_CMAKE_FOLDER}/NSCPPBuffer.cmake)
88INCLUDE(${BUILD_CMAKE_FOLDER}/functions.cmake)
89
90
91FIND_PACKAGE(PythonInterpEx)
92FIND_PACKAGE(PythonLibsEx)
93IF (NOT PYTHONINTERP_FOUND)
94        MESSAGE(FATAL_ERROR "Could not find python which is required for building")
95ELSE (NOT PYTHONINTERP_FOUND)
96        message(STATUS "Found python in: ${PYTHON_EXECUTABLE}")
97ENDIF (NOT PYTHONINTERP_FOUND)
98IF (PYTHONLIBSEX_FOUND)
99        MESSAGE(STATUS "Found python (lib) in: ${PYTHON_LIBRARY}")
100ENDIF (PYTHONLIBSEX_FOUND)
101
102
103SET(VERSION_TXT ${CMAKE_CURRENT_SOURCE_DIR}/version.txt)
104IF("${INCREASE_BUILD}" STREQUAL "1")
105EXECUTE_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")
115ENDIF("${INCREASE_BUILD}" STREQUAL "1")
116
117EXECUTE_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       
126IF(TMP_VERSION_OUT STREQUAL "")
127        MESSAGE(FATA_ERROR, "Failed to generate version from: ${PYTHON_EXECUTABLE} ${BUILD_PYTHON_FOLDER}/version.py --file ${VERSION_TXT} --display ")
128ENDIF(TMP_VERSION_OUT STREQUAL "")
129STRING(REGEX REPLACE ".*([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+).*" "\\1" VERSION_SERIES ${TMP_VERSION_OUT})
130STRING(REGEX REPLACE ".*([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+).*" "\\2" VERSION_MAJOR ${TMP_VERSION_OUT})
131STRING(REGEX REPLACE ".*([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+).*" "\\3" VERSION_MINOR ${TMP_VERSION_OUT})
132STRING(REGEX REPLACE ".*([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+).*" "\\4" VERSION_BUILD ${TMP_VERSION_OUT})
133MESSAGE(STATUS "Version: ${VERSION_SERIES}.${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}")
134IF(WIN32)
135        SET(VERSION_ARCH Win32)
136        IF(CMAKE_CL_64)
137                SET(VERSION_ARCH x64)
138        ENDIF(CMAKE_CL_64)
139ELSE(WIN32)
140        SET(VERSION_ARCH Unknown)
141ENDIF(WIN32)
142
143
144SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "NSClient++")
145SET(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
149SET(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_SERIES}.${VERSION_MAJOR}")
150SET(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR})
151SET(CPACK_PACKAGE_VERSION_PATCH ${VERSION_BUILD})
152
153SET(CPACK_PACKAGE_INSTALL_DIRECTORY "CMake ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}")
154IF(WIN32 AND NOT UNIX)
155        SET(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 0)
156        SET(CPACK_GENERATOR ZIP)
157ELSE(WIN32 AND NOT UNIX)
158        SET(CPACK_STRIP_FILES "bin/MyExecutable")
159        SET(CPACK_SOURCE_STRIP_FILES "")
160        SET(CPACK_PACKAGE_EXECUTABLES "nscp")
161ENDIF(WIN32 AND NOT UNIX)
162INCLUDE(CPack)
163
164
165
166INCLUDE_DIRECTORIES(${NSCP_INCLUDEDIR} ${CMAKE_CURRENT_BINARY_DIR}/libs)
167SET(CMAKE_LIBRARY_PATH "${CMAKE_LIBRARY_PATH};${OPENSSL_LIBRARY_DIR};${NSCP_LIBRARYDIR};${BOOST_LIBRARYDIR}")
168
169SET_MULTITHREAD()
170
171IF(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)
177ENDIF(NOT SHARED_LIBS)
178
179IF(NOT SHARED_LIBS)
180  SET(NSCP_STATIC true)
181ENDIF(NOT SHARED_LIBS)
182
183IF(NOT MULTI_THREADED)
184  OPTION(MULTI_THREADED "Build multi-threaded httpd deamon (if possible)" ON)
185ENDIF(NOT MULTI_THREADED)
186
187
188IF(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")
191ELSE(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)")
198ENDIF(WIN32)
199
200FIND_PACKAGE(GoogleBreakpad COMPONENTS common exception_handler crash_report_sender crash_generation_client)
201if(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}")
205else(BREAKPAD_FOUND)
206        MESSAGE(WARNING "Breakpad was not found in: ${BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR}/${BREAKPAD_EXCEPTION_HANDLER_LIBRARIES}")
207endif(BREAKPAD_FOUND)
208
209FIND_PACKAGE(OpenSSL)
210if(OPENSSL_FOUND)
211        MESSAGE(STATUS "Found OpenSSL: ${OPENSSL_INCLUDE_DIR}")
212        SET(NSCP_GLOBAL_DEFINES ${NSCP_GLOBAL_DEFINES} -DUSE_SSL)
213else(OPENSSL_FOUND)
214        MESSAGE(WARNING " OpenSSL NOT found (no ssl support, ${OPENSSL_INCLUDE_DIR})")
215endif(OPENSSL_FOUND)
216
217FIND_PACKAGE(Boost COMPONENTS system filesystem thread regex date_time program_options python REQUIRED)
218if(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)
229else(Boost_FOUND)
230        MESSAGE(FATAL_ERROR "boost NOT fround: ${Boost_ERROR_REASON}")
231endif(Boost_FOUND)
232
233if(PROTOBUF_FOUND)
234        message(STATUS "Found proto in: ${PROTOBUF_INCLUDE_DIR} / ${PROTOBUF_LIBRARY} (${PROTOBUF_PROTOC_EXECUTABLE})")
235        INCLUDE_DIRECTORIES("${PROTOBUF_INCLUDE_DIR}")
236else(PROTOBUF_FOUND)
237        message(FATAL_ERROR "Protocol buffers NOT found (${PROTOBUF_LIBRARYDIR})")
238endif(PROTOBUF_FOUND)
239
240IF(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()
296endif(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
307IF(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)
315ENDIF(NOT WIN32)
316
317SET(NSCP_GLOBAL_DEFINES ${NSCP_GLOBAL_DEFINES} -DUNICODE -D_UNICODE -D_WIN32_WINNT=0x0403)
318# TODO: Fix this issue! (crypto++ and masm)
319IF (WIN32)
320        SET(NSCP_GLOBAL_DEFINES ${NSCP_GLOBAL_DEFINES} -DCRYPTOPP_DISABLE_ASM -D_CRT_SECURE_NO_WARNINGS)
321ENDIF (WIN32)
322
323
324IF(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})
331ENDIF()
332
333IF(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)
337ENDIF(NOT CMAKE_BUILD_TYPE)
338
339SET(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
350SET(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
365SET(NSCP_FILTER_CPP
366)
367
368SET(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)
373SET(NSCP_FILTER_LIB
374        where_filter
375)
376
377SET(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
391message(STATUS "NSCP PLUGIN LIB: ${NSCP_DEF_PLUGIN_LIB}")
392message(STATUS "NSCP PLUGIN CPP: ${NSCP_DEF_PLUGIN_CPP}")
393       
394LINK_DIRECTORIES(${CMAKE_LIBRARY_PATH} ${OPENSSL_LIBRARY_DIR} ${NSCP_LIBRARYDIR} ${BOOST_LIBRARYDIR})
395
396SET(ALL_LIB_NAMES)
397message(STATUS "Adding libraries")
398FILE(GLOB ALL_LIB_PROJECTS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "libs/*/CMakeLists.txt")
399foreach(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})
405endforeach(CURRENT_LIB ${ALL_LIB_PROJECTS})
406
407# Compile time constants & make sure our build finds it
408CONFIGURE_FILE(
409  ${NSCP_INCLUDEDIR}/config.h.in
410  ${NSCP_INCLUDEDIR}/config.h
411  @ONLY
412)
413INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
414INCLUDE_DIRECTORIES(${NSCP_LOCAL_INCLUDE_PATH})
415INSTALL_FILES(/include FILES ${WCONFIG_H_PATH})
416
417add_definitions(-DUNICODE -D_UNICODE)
418
419include_directories("${PROJECT_BINARY_DIR}")
420
421MESSAGE(STATUS "Build path: ${PROJECT_BINARY_DIR}")
422SET(NSCP_PROJECT_BINARY_DIR ${PROJECT_BINARY_DIR})
423ADD_SUBDIRECTORY("helpers/settings_manager")
424ADD_SUBDIRECTORY("helpers/where_filter")
425ADD_SUBDIRECTORY("service")
426SET(MAIN_NSCP_TARGET "nscp")
427MESSAGE(STATUS "NSCP Target: ${MAIN_NSCP_TARGET}")
428
429ADD_SUBDIRECTORY("scripts")
430ADD_SUBDIRECTORY("files")
431ADD_SUBDIRECTORY("docs")
432
433LOAD_SECTIONS(ALL_MODULE_NAMES "modules/*/module.cmake" "Modules")
434LOAD_SECTIONS(ALL_TOOL_NAMES "tools/*/module.cmake" "Tools")
435LOAD_SECTIONS(ALL_INSTALLERS_DLLS_NAMES "helpers/installer-dlls/*/module.cmake" "Installer DLLs")
436
437LOAD_SECTIONS(ALL_INSTALLERS_NAMES "helpers/installers/*/module.cmake" "Installers")
438
439SET_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
446SET_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
453if (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 "../")
456endif()
457
458IF(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)
463ENDIF(CMAKE_COMPILER_IS_GNUCXX)
464
465CONFIGURE_FILE(
466  ${BUILD_PYTHON_FOLDER}/postbuild.py
467  ${BUILD_TARGET_EXE_PATH}/postbuild.py
468)
469CONFIGURE_FILE(
470  ${BUILD_PYTHON_FOLDER}/config.py
471  ${BUILD_TARGET_EXE_PATH}/config.py
472)
Note: See TracBrowser for help on using the repository browser.