|
| 1 | +CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11) |
| 2 | + |
| 3 | +# get working XOP on MacOSX, exported symbol list?? |
| 4 | +PROJECT(ZeroMQ) |
| 5 | + |
| 6 | +IF(CMAKE_SIZEOF_VOID_P EQUAL 4) |
| 7 | + SET(bitness "") |
| 8 | + SET(bitnessWithDash "") |
| 9 | + SET(bitnessWithDashAndText "-64") |
| 10 | + SET(bitnessLibFolder "x86") |
| 11 | + SET(installFolder "${CMAKE_SOURCE_DIR}/../../../XOPs-IP7") |
| 12 | +ELSEIF(CMAKE_SIZEOF_VOID_P EQUAL 8) |
| 13 | + SET(bitness "64") |
| 14 | + SET(bitnessWithDash "-64") |
| 15 | + SET(bitnessWithDashAndText "-64bit") |
| 16 | + SET(bitnessLibFolder "x64") |
| 17 | + SET(installFolder "${CMAKE_SOURCE_DIR}/../../../XOPs-IP7-64bit") |
| 18 | +ENDIF() |
| 19 | + |
| 20 | +SET(libname "${PROJECT_NAME}${bitnessWithDash}") |
| 21 | + |
| 22 | +IF(APPLE) |
| 23 | + # use RPATH |
| 24 | + cmake_policy(SET CMP0042 NEW) |
| 25 | + SET(RESOURCES "${PROJECT_NAME}.r") |
| 26 | +ELSEIF(WIN32) |
| 27 | + SET(RESOURCES "${PROJECT_NAME}.rc") |
| 28 | +ENDIF() |
| 29 | + |
| 30 | +SET(SOURCES |
| 31 | +CallFunctionOperation.cpp |
| 32 | +CallFunctionParameterHandler.cpp |
| 33 | +ConcurrentXOPNotice.cpp |
| 34 | +CustomExceptions.cpp |
| 35 | +functions.cpp |
| 36 | +GlobalData.cpp |
| 37 | +HelperFunctions.cpp |
| 38 | +MessageHandler.cpp |
| 39 | +RequestInterface.cpp |
| 40 | +RequestInterfaceException.cpp |
| 41 | +SerializeWave.cpp |
| 42 | +ZeroMQ.cpp |
| 43 | +zeromq_client_connect.cpp |
| 44 | +zeromq_client_recv.cpp |
| 45 | +zeromq_client_send.cpp |
| 46 | +zeromq_server_bind.cpp |
| 47 | +zeromq_server_recv.cpp |
| 48 | +zeromq_server_send.cpp |
| 49 | +zeromq_set.cpp |
| 50 | +zeromq_handler_start.cpp |
| 51 | +zeromq_stop.cpp |
| 52 | +zeromq_handler_stop.cpp |
| 53 | +zeromq_test_callfunction.cpp |
| 54 | +zeromq_test_serializeWave.cpp) |
| 55 | + |
| 56 | +SET(SOURCES_EXT |
| 57 | +fmt/format.cc |
| 58 | +fmt/ostream.cc |
| 59 | +fmt/posix.cc) |
| 60 | + |
| 61 | +SET(HEADERS |
| 62 | +CallFunctionOperation.h |
| 63 | +CallFunctionParameterHandler.h |
| 64 | +ConcurrentQueue.h |
| 65 | +ConcurrentXOPNotice.h |
| 66 | +CustomExceptions.h |
| 67 | +Errors.h |
| 68 | +functions.h |
| 69 | +GlobalData.h |
| 70 | +HelperFunctions.h |
| 71 | +IgorTypeUnion.h |
| 72 | +MessageHandler.h |
| 73 | +RequestInterface.h |
| 74 | +RequestInterfaceException.h |
| 75 | +resource.h |
| 76 | +SerializeWave.h |
| 77 | +SocketWithMutex.h |
| 78 | +ZeroMQ.h) |
| 79 | + |
| 80 | +SOURCE_GROUP("Headers" FILES ${HEADERS}) |
| 81 | +ADD_LIBRARY(${libname} SHARED ${SOURCES} ${SOURCES_EXT} ${HEADERS} ${RESOURCES}) |
| 82 | + |
| 83 | +SET_TARGET_PROPERTIES(${libname} PROPERTIES SUFFIX ".xop") |
| 84 | + |
| 85 | +INCLUDE_DIRECTORIES(XOPSupport . "libzmq/include") |
| 86 | + |
| 87 | +IF(APPLE) |
| 88 | + SET_TARGET_PROPERTIES(${libname} PROPERTIES PREFIX "") |
| 89 | + |
| 90 | + FIND_LIBRARY(CARBON_LIBRARY Carbon) |
| 91 | + FIND_LIBRARY(COCOA_LIBRARY Cocoa) |
| 92 | + FIND_LIBRARY(AUDIO_UNIT AudioUnit) |
| 93 | + FIND_LIBRARY(AUDIO_TOOLBOX AudioToolbox) |
| 94 | + MARK_AS_ADVANCED(CARBON_LIBRARY AUDIO_TOOLBOX AUDIO_UNIT COCOA_LIBRARY) |
| 95 | + SET(EXTRA_LIBS ${CARBON_LIBRARY} ${COCOA_LIBRARY} ${AUDIO_TOOLBOX} ${AUDIO_UNIT}) |
| 96 | + |
| 97 | + FIND_PROGRAM(APPLE_RESOURCE Rez /Developer/Tools) |
| 98 | + ADD_CUSTOM_COMMAND(TARGET ${libname} |
| 99 | + POST_BUILD |
| 100 | + COMMAND ${APPLE_RESOURCE} -i XOPSupport -F ${CARBON_LIBRARY}/.. ${RESOURCES} -o ${CMAKE_BINARY_DIR}/${libname}.xop |
| 101 | + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} |
| 102 | + ) |
| 103 | + |
| 104 | + TARGET_LINK_LIBRARIES(${libname} ${EXTRA_LIBS} |
| 105 | + ${CMAKE_SOURCE_DIR}/XOPSupport/Xcode/libXOPSupport${bitness}.a |
| 106 | + /Users/thomas/devel/libzmq/build/lib/libzmq-static.a) |
| 107 | + |
| 108 | + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -D=TARGET_OS_MAC -Wno-deprecated -mmacosx-version-min=10.9") |
| 109 | +ELSEIF(WIN32) |
| 110 | + # CMAKE links by default to the MSVC runtime dynamically |
| 111 | + # so we don't have to set that here |
| 112 | + |
| 113 | + TARGET_LINK_LIBRARIES(${libname} version.lib ${EXTRA_LIBS} |
| 114 | + ${CMAKE_SOURCE_DIR}/XOPSupport/IGOR${bitness}.lib |
| 115 | + ${CMAKE_SOURCE_DIR}/XOPSupport/VC2015/XOPSupport${bitness}.lib |
| 116 | + optimized ${CMAKE_SOURCE_DIR}/libzmq/${bitnessLibFolder}/libzmq-v140-mt-4_2_0.lib |
| 117 | + debug ${CMAKE_SOURCE_DIR}/libzmq/${bitnessLibFolder}/libzmq-v140-mt-gd-4_2_0.lib) |
| 118 | + |
| 119 | + # Use parallel builds |
| 120 | + IF(MSVC) |
| 121 | + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") |
| 122 | + ENDIF() |
| 123 | +ENDIF() |
| 124 | + |
| 125 | +# run clang-format before building |
| 126 | +ADD_CUSTOM_COMMAND(TARGET ${libname} |
| 127 | + PRE_BUILD |
| 128 | + COMMAND clang-format -i ${SOURCES} ${HEADERS} |
| 129 | + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} |
| 130 | + COMMENT "Running clang-format" VERBATIM) |
| 131 | + |
| 132 | +ADD_CUSTOM_TARGET(clang-tidy |
| 133 | + COMMAND clang-tidy -i -- ${SOURCES} -p=${CMAKE_BUILD_DIR} -checks=* |
| 134 | + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} |
| 135 | + COMMENT "Running clang-tidy" VERBATIM) |
| 136 | + |
| 137 | +INSTALL(TARGETS ${libname} |
| 138 | + RUNTIME |
| 139 | + DESTINATION ${installFolder}) |
| 140 | + |
| 141 | +INSTALL(FILES libzmq/${bitnessLibFolder}/libzmq-v140-mt-4_2_0.dll |
| 142 | + DESTINATION ${installFolder} |
| 143 | + CONFIGURATIONS Release) |
| 144 | + |
| 145 | +INSTALL(FILES libzmq/${bitnessLibFolder}/libzmq-v140-mt-gd-4_2_0.dll |
| 146 | + DESTINATION ${installFolder} |
| 147 | + CONFIGURATIONS Debug) |
0 commit comments