fixed adding file problem
[c11concurrency-benchmarks.git] / gdax-orderbook-hpp / demo / dependencies / websocketpp-0.7.0 / cmake / CMakeHelpers.cmake
1
2 # Print build configuration
3 macro (print_used_build_config)
4     message ("\n=========== Used Build Configuration =============\n")
5     message (STATUS "ENABLE_CPP11        = " ${ENABLE_CPP11})
6     message (STATUS "BUILD_EXAMPLES      = " ${BUILD_EXAMPLES})
7     message (STATUS "BUILD_TESTS         = " ${BUILD_TESTS})
8     message ("")
9     message (STATUS "WEBSOCKETPP_ROOT    = " ${WEBSOCKETPP_ROOT})
10     message (STATUS "WEBSOCKETPP_BIN     = " ${WEBSOCKETPP_BIN})
11     message (STATUS "WEBSOCKETPP_LIB     = " ${WEBSOCKETPP_LIB})
12     message (STATUS "Install prefix      = " ${CMAKE_INSTALL_PREFIX})
13     message ("")
14     message (STATUS "WEBSOCKETPP_BOOST_LIBS        = ${WEBSOCKETPP_BOOST_LIBS}")
15     message (STATUS "WEBSOCKETPP_PLATFORM_LIBS     = ${WEBSOCKETPP_PLATFORM_LIBS}")
16     message (STATUS "WEBSOCKETPP_PLATFORM_TLS_LIBS = ${WEBSOCKETPP_PLATFORM_TLS_LIBS}")
17     message ("") 
18     message (STATUS "OPENSSL_FOUND        = ${OPENSSL_FOUND}")
19     message (STATUS "OPENSSL_INCLUDE_DIR     = ${OPENSSL_INCLUDE_DIR}")
20     message (STATUS "OPENSSL_LIBRARIES = ${OPENSSL_LIBRARIES}")
21     message (STATUS "OPENSSL_VERSION = ${OPENSSL_VERSION}")
22     message ("") 
23 endmacro ()
24
25 # Adds the given folder_name into the source files of the current project. 
26 # Use this macro when your module contains .cpp and .h files in several subdirectories.
27 # Your sources variable needs to be WSPP_SOURCE_FILES and headers variable WSPP_HEADER_FILES.
28 macro(add_source_folder folder_name)
29     file(GLOB H_FILES_IN_FOLDER_${folder_name} ${folder_name}/*.hpp ${folder_name}/*.h)
30     file(GLOB CPP_FILES_IN_FOLDER_${folder_name} ${folder_name}/*.cpp ${folder_name}/*.c)
31     source_group("Header Files\\${folder_name}" FILES ${H_FILES_IN_FOLDER_${folder_name}})
32     source_group("Source Files\\${folder_name}" FILES ${CPP_FILES_IN_FOLDER_${folder_name}})
33     set(WSPP_HEADER_FILES ${WSPP_HEADER_FILES} ${H_FILES_IN_FOLDER_${folder_name}})
34     set(WSPP_SOURCE_FILES ${WSPP_SOURCE_FILES} ${CPP_FILES_IN_FOLDER_${folder_name}})
35 endmacro()
36
37 # Initialize target.
38 macro (init_target NAME)
39     set (TARGET_NAME ${NAME})
40     message ("** " ${TARGET_NAME})
41
42     # Include our own module path. This makes #include "x.h" 
43     # work in project subfolders to include the main directory headers.
44     include_directories (${CMAKE_CURRENT_SOURCE_DIR})
45 endmacro ()
46
47 # Build executable for executables
48 macro (build_executable TARGET_NAME)
49     set (TARGET_LIB_TYPE "EXECUTABLE")
50     message (STATUS "-- Build Type:")
51     message (STATUS "       " ${TARGET_LIB_TYPE})
52
53     add_executable (${TARGET_NAME} ${ARGN})
54
55     include_directories (${WEBSOCKETPP_ROOT} ${WEBSOCKETPP_INCLUDE})
56
57     target_link_libraries(${TARGET_NAME} ${WEBSOCKETPP_PLATFORM_LIBS})
58
59     set_target_properties (${TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${WEBSOCKETPP_BIN})
60     set_target_properties (${TARGET_NAME} PROPERTIES DEBUG_POSTFIX d)
61 endmacro ()
62
63 # Build executable and register as test
64 macro (build_test TARGET_NAME)
65     build_executable (${TARGET_NAME} ${ARGN})
66
67     if (${CMAKE_VERSION} VERSION_LESS 3)
68         message(WARNING "CMake too old to register ${TARGET_NAME} as a test")
69     else ()
70         add_test(NAME ${TARGET_NAME} COMMAND $<TARGET_FILE:${TARGET_NAME}>)
71     endif ()
72 endmacro ()
73
74 # Finalize target for all types
75 macro (final_target)
76     if ("${TARGET_LIB_TYPE}" STREQUAL "EXECUTABLE")
77         install (TARGETS ${TARGET_NAME} 
78                  RUNTIME DESTINATION "bin" 
79                  CONFIGURATIONS ${CMAKE_CONFIGURATION_TYPES})
80     endif ()
81
82     # install headers, directly from current source dir and look for subfolders with headers
83     file (GLOB_RECURSE TARGET_INSTALL_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.hpp)
84     foreach (hppfile ${TARGET_INSTALL_HEADERS})
85       get_filename_component (currdir ${hppfile} PATH)
86       install (FILES ${hppfile} DESTINATION "include/${TARGET_NAME}/${currdir}")
87     endforeach()
88 endmacro ()
89
90 macro (link_boost)
91     target_link_libraries (${TARGET_NAME} ${Boost_LIBRARIES})
92 endmacro ()
93
94 macro (link_openssl)
95     target_link_libraries (${TARGET_NAME} ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY})
96 endmacro ()
97
98 macro (link_zlib)
99         target_link_libraries (${TARGET_NAME} ${ZLIB_LIBRARIES})
100 endmacro ()
101
102 macro (include_subdirs PARENT)
103     file (GLOB SDIRS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${PARENT}/*")
104     foreach (SUBDIR ${SDIRS})
105         if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIR}/CMakeLists.txt")
106             add_subdirectory ("${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIR}")
107         endif ()
108     endforeach ()
109 endmacro()