source: nscp/CMakeLists.txt @ f7a074d

0.4.00.4.10.4.2
Last change on this file since f7a074d was 2b2e9b8, checked in by Michael Medin <michael@…>, 21 months ago

Another massive commit with a single comment, but essentially this is the first version with a proper distributed message queue this will be the foundation of some pretty cool stuff in the next few weeks/months...

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