mirror of
https://github.com/zeromq/libzmq.git
synced 2024-12-12 18:40:27 +01:00
Add CMake Build Output Options
Add two new options to CMakeLists.txt: `BUILD_SHARED` - Whether or not to build the shared object (Default: ON) `BUILD_STATIC` - Whether or not to build the static archive (Default: ON)
This commit is contained in:
parent
1d4014dc52
commit
69b2affe05
181
CMakeLists.txt
181
CMakeLists.txt
@ -290,7 +290,6 @@ if (LIBZMQ_WERROR)
|
|||||||
zmq_check_cxx_flag_prepend ("-errwarn=%all")
|
zmq_check_cxx_flag_prepend ("-errwarn=%all")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
||||||
if (CMAKE_SYSTEM_PROCESSOR MATCHES "^sparc")
|
if (CMAKE_SYSTEM_PROCESSOR MATCHES "^sparc")
|
||||||
zmq_check_cxx_flag_prepend ("-mcpu=v9")
|
zmq_check_cxx_flag_prepend ("-mcpu=v9")
|
||||||
endif ()
|
endif ()
|
||||||
@ -724,27 +723,45 @@ endif ()
|
|||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
# output
|
# output
|
||||||
|
option(BUILD_SHARED "Whether or not to build the shared object" ON)
|
||||||
|
option(BUILD_STATIC "Whether or not to build the static archive" ON)
|
||||||
|
|
||||||
|
list(APPEND target_outputs "")
|
||||||
|
|
||||||
|
if (BUILD_SHARED)
|
||||||
|
list(APPEND target_outputs "zmq-shared")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (BUILD_STATIC)
|
||||||
|
list(APPEND target_outputs "zmq-static")
|
||||||
|
endif()
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
add_library (zmq-shared SHARED ${sources} ${public_headers} ${html-docs} ${readme-docs} ${CMAKE_CURRENT_BINARY_DIR}/NSIS.template.in)
|
if (BUILD_SHARED)
|
||||||
target_link_libraries (zmq-shared ${OPTIONAL_LIBRARIES})
|
add_library (zmq-shared SHARED ${sources} ${public_headers} ${html-docs} ${readme-docs} ${CMAKE_CURRENT_BINARY_DIR}/NSIS.template.in)
|
||||||
set_target_properties (zmq-shared PROPERTIES
|
target_link_libraries (zmq-shared ${OPTIONAL_LIBRARIES})
|
||||||
PUBLIC_HEADER "${public_headers}"
|
set_target_properties (zmq-shared PROPERTIES
|
||||||
RELEASE_POSTFIX "${MSVC_TOOLSET}-mt-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
|
PUBLIC_HEADER "${public_headers}"
|
||||||
RELWITHDEBINFO_POSTFIX "${MSVC_TOOLSET}-mt-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
|
RELEASE_POSTFIX "${MSVC_TOOLSET}-mt-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
|
||||||
DEBUG_POSTFIX "${MSVC_TOOLSET}-mt-gd-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
|
RELWITHDEBINFO_POSTFIX "${MSVC_TOOLSET}-mt-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
|
||||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin"
|
DEBUG_POSTFIX "${MSVC_TOOLSET}-mt-gd-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
|
||||||
COMPILE_DEFINITIONS "DLL_EXPORT"
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin"
|
||||||
OUTPUT_NAME "libzmq")
|
COMPILE_DEFINITIONS "DLL_EXPORT"
|
||||||
add_library (zmq-static STATIC ${sources})
|
OUTPUT_NAME "libzmq")
|
||||||
set_target_properties (zmq-static PROPERTIES
|
endif()
|
||||||
PUBLIC_HEADER "${public_headers}"
|
|
||||||
RELEASE_POSTFIX "${MSVC_TOOLSET}-mt-s-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
|
if (BUILD_STATIC)
|
||||||
RELWITHDEBINFO_POSTFIX "${MSVC_TOOLSET}-mt-s-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
|
add_library (zmq-static STATIC ${sources})
|
||||||
DEBUG_POSTFIX "${MSVC_TOOLSET}-mt-sgd-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
|
set_target_properties (zmq-static PROPERTIES
|
||||||
COMPILE_FLAGS "/DZMQ_STATIC"
|
PUBLIC_HEADER "${public_headers}"
|
||||||
OUTPUT_NAME "libzmq")
|
RELEASE_POSTFIX "${MSVC_TOOLSET}-mt-s-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
|
||||||
|
RELWITHDEBINFO_POSTFIX "${MSVC_TOOLSET}-mt-s-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
|
||||||
|
DEBUG_POSTFIX "${MSVC_TOOLSET}-mt-sgd-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
|
||||||
|
COMPILE_FLAGS "/DZMQ_STATIC"
|
||||||
|
OUTPUT_NAME "libzmq")
|
||||||
|
endif()
|
||||||
else ()
|
else ()
|
||||||
|
if (BUILD_SHARED)
|
||||||
add_library (zmq-shared SHARED ${sources} ${public_headers} ${html-docs} ${readme-docs} ${zmq-pkgconfig})
|
add_library (zmq-shared SHARED ${sources} ${public_headers} ${html-docs} ${readme-docs} ${zmq-pkgconfig})
|
||||||
# NOTE: the SOVERSION MUST be the same as the one generated by libtool!
|
# NOTE: the SOVERSION MUST be the same as the one generated by libtool!
|
||||||
set_target_properties (zmq-shared PROPERTIES
|
set_target_properties (zmq-shared PROPERTIES
|
||||||
@ -767,15 +784,19 @@ else ()
|
|||||||
set_source_files_properties (${zmq-pkgconfig} PROPERTIES
|
set_source_files_properties (${zmq-pkgconfig} PROPERTIES
|
||||||
MACOSX_PACKAGE_LOCATION lib/pkgconfig)
|
MACOSX_PACKAGE_LOCATION lib/pkgconfig)
|
||||||
endif ()
|
endif ()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (BUILD_STATIC)
|
||||||
add_library (zmq-static STATIC ${sources} ${public_headers} ${html-docs} ${readme-docs} ${zmq-pkgconfig})
|
add_library (zmq-static STATIC ${sources} ${public_headers} ${html-docs} ${readme-docs} ${zmq-pkgconfig})
|
||||||
set_target_properties (zmq-static PROPERTIES
|
set_target_properties (zmq-static PROPERTIES
|
||||||
PUBLIC_HEADER "${public_headers}"
|
PUBLIC_HEADER "${public_headers}"
|
||||||
COMPILE_DEFINITIONS "ZMQ_STATIC"
|
COMPILE_DEFINITIONS "ZMQ_STATIC"
|
||||||
OUTPUT_NAME "zmq"
|
OUTPUT_NAME "zmq"
|
||||||
PREFIX "lib")
|
PREFIX "lib")
|
||||||
|
endif()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
foreach (target zmq-shared zmq-static)
|
foreach (target ${target_outputs})
|
||||||
target_include_directories (${target}
|
target_include_directories (${target}
|
||||||
PUBLIC
|
PUBLIC
|
||||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||||
@ -784,66 +805,72 @@ foreach (target zmq-shared zmq-static)
|
|||||||
)
|
)
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
target_link_libraries (zmq-shared ${CMAKE_THREAD_LIBS_INIT})
|
if (BUILD_SHARED)
|
||||||
|
target_link_libraries (zmq-shared ${CMAKE_THREAD_LIBS_INIT})
|
||||||
|
|
||||||
if (SODIUM_FOUND)
|
if (SODIUM_FOUND)
|
||||||
target_link_libraries (zmq-shared ${SODIUM_LIBRARIES})
|
target_link_libraries (zmq-shared ${SODIUM_LIBRARIES})
|
||||||
endif ()
|
endif ()
|
||||||
if (HAVE_WS2_32)
|
if (HAVE_WS2_32)
|
||||||
target_link_libraries (zmq-shared ws2_32)
|
target_link_libraries (zmq-shared ws2_32)
|
||||||
elseif (HAVE_WS2)
|
elseif (HAVE_WS2)
|
||||||
target_link_libraries (zmq-shared ws2)
|
target_link_libraries (zmq-shared ws2)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
if (HAVE_RPCRT4)
|
||||||
|
target_link_libraries (zmq-shared rpcrt4)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
if (HAVE_IPHLAPI)
|
||||||
|
target_link_libraries (zmq-shared iphlpapi)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
if (RT_LIBRARY)
|
||||||
|
target_link_libraries (zmq-shared ${RT_LIBRARY})
|
||||||
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (HAVE_RPCRT4)
|
if (BUILD_SHARED)
|
||||||
target_link_libraries (zmq-shared rpcrt4)
|
set (perf-tools local_lat
|
||||||
endif ()
|
remote_lat
|
||||||
|
local_thr
|
||||||
|
remote_thr
|
||||||
|
inproc_lat
|
||||||
|
inproc_thr)
|
||||||
|
|
||||||
if (HAVE_IPHLAPI)
|
if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug") # Why?
|
||||||
target_link_libraries (zmq-shared iphlpapi)
|
option (WITH_PERF_TOOL "Build with perf-tools" ON)
|
||||||
endif ()
|
else ()
|
||||||
|
option (WITH_PERF_TOOL "Build with perf-tools" OFF)
|
||||||
|
endif ()
|
||||||
|
|
||||||
if (RT_LIBRARY)
|
if (WITH_PERF_TOOL)
|
||||||
target_link_libraries (zmq-shared ${RT_LIBRARY})
|
foreach (perf-tool ${perf-tools})
|
||||||
endif ()
|
add_executable (${perf-tool} perf/${perf-tool}.cpp)
|
||||||
|
target_link_libraries (${perf-tool} zmq-shared ${OPTIONAL_LIBRARIES})
|
||||||
|
|
||||||
set (perf-tools local_lat
|
if (RT_LIBRARY)
|
||||||
remote_lat
|
target_link_libraries (${perf-tool} ${RT_LIBRARY})
|
||||||
local_thr
|
endif ()
|
||||||
remote_thr
|
|
||||||
inproc_lat
|
|
||||||
inproc_thr)
|
|
||||||
|
|
||||||
if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug") # Why?
|
if (ZMQ_BUILD_FRAMEWORK)
|
||||||
option (WITH_PERF_TOOL "Build with perf-tools" ON)
|
# Copy perf-tools binaries into Framework
|
||||||
else ()
|
add_custom_command (
|
||||||
option (WITH_PERF_TOOL "Build with perf-tools" OFF)
|
TARGET zmq-shared ${perf-tool}
|
||||||
endif ()
|
POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND}
|
||||||
if (WITH_PERF_TOOL)
|
ARGS -E copy "$<TARGET_FILE:${perf-tool}>" "${LIBRARY_OUTPUT_PATH}/ZeroMQ.framework/Versions/${ZMQ_VERSION_STRING}/MacOS/${perf-tool}"
|
||||||
foreach (perf-tool ${perf-tools})
|
VERBATIM
|
||||||
add_executable (${perf-tool} perf/${perf-tool}.cpp)
|
COMMENT "Perf tools")
|
||||||
target_link_libraries (${perf-tool} zmq-shared ${OPTIONAL_LIBRARIES})
|
else ()
|
||||||
|
install (TARGETS ${perf-tool}
|
||||||
if (RT_LIBRARY)
|
RUNTIME DESTINATION bin
|
||||||
target_link_libraries (${perf-tool} ${RT_LIBRARY})
|
COMPONENT PerfTools)
|
||||||
endif ()
|
endif ()
|
||||||
|
endforeach ()
|
||||||
if (ZMQ_BUILD_FRAMEWORK)
|
endif ()
|
||||||
# Copy perf-tools binaries into Framework
|
elseif (WITH_PERF_TOOL)
|
||||||
add_custom_command (
|
message(FATAL_ERROR "Shared library disabled - perf-tools unavailable.")
|
||||||
TARGET zmq-shared ${perf-tool}
|
|
||||||
POST_BUILD
|
|
||||||
COMMAND ${CMAKE_COMMAND}
|
|
||||||
ARGS -E copy "$<TARGET_FILE:${perf-tool}>" "${LIBRARY_OUTPUT_PATH}/ZeroMQ.framework/Versions/${ZMQ_VERSION_STRING}/MacOS/${perf-tool}"
|
|
||||||
VERBATIM
|
|
||||||
COMMENT "Perf tools")
|
|
||||||
else ()
|
|
||||||
install (TARGETS ${perf-tool}
|
|
||||||
RUNTIME DESTINATION bin
|
|
||||||
COMPONENT PerfTools)
|
|
||||||
endif ()
|
|
||||||
endforeach ()
|
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
@ -862,14 +889,14 @@ endif ()
|
|||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
install (TARGETS zmq-shared zmq-static
|
install (TARGETS ${target_outputs}
|
||||||
EXPORT ${PROJECT_NAME}-targets
|
EXPORT ${PROJECT_NAME}-targets
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
COMPONENT SDK)
|
COMPONENT SDK)
|
||||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
install (TARGETS zmq-shared zmq-static
|
install (TARGETS ${target_outputs}
|
||||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
@ -878,14 +905,14 @@ if (MSVC)
|
|||||||
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/bin/libzmq${MSVC_TOOLSET}-mt-gd-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}.pdb DESTINATION lib
|
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/bin/libzmq${MSVC_TOOLSET}-mt-gd-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}.pdb DESTINATION lib
|
||||||
COMPONENT SDK)
|
COMPONENT SDK)
|
||||||
endif ()
|
endif ()
|
||||||
else ()
|
elseif (BUILD_SHARED)
|
||||||
install (TARGETS zmq-shared
|
install (TARGETS zmq-shared
|
||||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
COMPONENT Runtime)
|
COMPONENT Runtime)
|
||||||
endif ()
|
endif ()
|
||||||
else ()
|
else ()
|
||||||
install (TARGETS zmq-shared zmq-static
|
install (TARGETS ${target_outputs}
|
||||||
EXPORT ${PROJECT_NAME}-targets
|
EXPORT ${PROJECT_NAME}-targets
|
||||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
Loading…
Reference in New Issue
Block a user