diff --git a/CMakeLists.txt b/CMakeLists.txt index e10537c349..9d8bf0dca5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -192,13 +192,13 @@ endif () if (ZMQ_HAVE_WINDOWS) # Cannot use check_library_exists because the symbol is always declared as char(*)(void) set(CMAKE_REQUIRED_LIBRARIES "ws2_32.lib") - check_symbol_exists (WSAStartup "WinSock2.h" HAVE_WS2_32) + check_symbol_exists (WSAStartup "winsock2.h" HAVE_WS2_32) set(CMAKE_REQUIRED_LIBRARIES "rpcrt4.lib") - check_symbol_exists (UuidCreateSequential "Rpc.h" HAVE_RPCRT4) + check_symbol_exists (UuidCreateSequential "rpc.h" HAVE_RPCRT4) set(CMAKE_REQUIRED_LIBRARIES "iphlpapi.lib") - check_symbol_exists (GetAdaptersAddresses "winsock2.h;Iphlpapi.h" HAVE_IPHLAPI) + check_symbol_exists (GetAdaptersAddresses "winsock2.h;iphlpapi.h" HAVE_IPHLAPI) set(CMAKE_REQUIRED_LIBRARIES "") # TODO: This not the symbol we're looking for. What is the symbol? @@ -911,20 +911,27 @@ if (MSVC) DEBUG_POSTFIX "${MSVC_TOOLSET}-mt-sgd-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}" COMPILE_FLAGS "/DZMQ_STATIC" OUTPUT_NAME "libzmq") - - target_compile_definitions(libzmq-static - PUBLIC ZMQ_STATIC - ) - endif() else () # avoid building everything twice for shared + static # only on *nix, as Windows needs different preprocessor defines in static builds - add_library (objects OBJECT ${sources}) - set_property(TARGET objects PROPERTY POSITION_INDEPENDENT_CODE ON) + if (NOT MINGW) + add_library (objects OBJECT ${sources}) + set_property(TARGET objects PROPERTY POSITION_INDEPENDENT_CODE ON) + target_include_directories (objects + PUBLIC + $ + $ + $ + ) + endif () if (BUILD_SHARED) - add_library (libzmq SHARED $ ${public_headers} ${html-docs} ${readme-docs} ${zmq-pkgconfig} ${CMAKE_CURRENT_BINARY_DIR}/version.rc) + if (MINGW) + add_library (libzmq SHARED ${sources} ${public_headers} ${html-docs} ${readme-docs} ${zmq-pkgconfig} ${CMAKE_CURRENT_BINARY_DIR}/version.rc) + else () + add_library (libzmq SHARED $ ${public_headers} ${html-docs} ${readme-docs} ${zmq-pkgconfig} ${CMAKE_CURRENT_BINARY_DIR}/version.rc) + endif () # NOTE: the SOVERSION and VERSION MUST be the same as the one generated by libtool! It is NOT the same as the version of the package. set_target_properties (libzmq PROPERTIES COMPILE_DEFINITIONS "DLL_EXPORT" @@ -949,19 +956,22 @@ else () endif() if (BUILD_STATIC) - add_library (libzmq-static STATIC $ ${public_headers} ${html-docs} ${readme-docs} ${zmq-pkgconfig} ${CMAKE_CURRENT_BINARY_DIR}/version.rc) + if (MINGW) + add_library (libzmq-static STATIC ${sources} ${public_headers} ${html-docs} ${readme-docs} ${zmq-pkgconfig} ${CMAKE_CURRENT_BINARY_DIR}/version.rc) + else () + add_library (libzmq-static STATIC $ ${public_headers} ${html-docs} ${readme-docs} ${zmq-pkgconfig} ${CMAKE_CURRENT_BINARY_DIR}/version.rc) + endif () set_target_properties (libzmq-static PROPERTIES PUBLIC_HEADER "${public_headers}" - COMPILE_DEFINITIONS "ZMQ_STATIC" OUTPUT_NAME "zmq" PREFIX "lib") endif() - target_include_directories (objects - PUBLIC - $ - $ - $ +endif () + +if (BUILD_STATIC) + target_compile_definitions(libzmq-static + PUBLIC ZMQ_STATIC ) endif ()