Unverified Commit d2293da6 authored by Luca Boccassi's avatar Luca Boccassi Committed by GitHub

Merge pull request #2983 from tonytheodore/master

Fixes for mingw cross-compilation
parents 9c748f1b c7876c09
...@@ -192,13 +192,13 @@ endif () ...@@ -192,13 +192,13 @@ endif ()
if (ZMQ_HAVE_WINDOWS) if (ZMQ_HAVE_WINDOWS)
# Cannot use check_library_exists because the symbol is always declared as char(*)(void) # Cannot use check_library_exists because the symbol is always declared as char(*)(void)
set(CMAKE_REQUIRED_LIBRARIES "ws2_32.lib") 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") 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") 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 "") set(CMAKE_REQUIRED_LIBRARIES "")
# TODO: This not the symbol we're looking for. What is the symbol? # TODO: This not the symbol we're looking for. What is the symbol?
...@@ -911,20 +911,27 @@ if (MSVC) ...@@ -911,20 +911,27 @@ if (MSVC)
DEBUG_POSTFIX "${MSVC_TOOLSET}-mt-sgd-${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" COMPILE_FLAGS "/DZMQ_STATIC"
OUTPUT_NAME "libzmq") OUTPUT_NAME "libzmq")
target_compile_definitions(libzmq-static
PUBLIC ZMQ_STATIC
)
endif() endif()
else () else ()
# avoid building everything twice for shared + static # avoid building everything twice for shared + static
# only on *nix, as Windows needs different preprocessor defines in static builds # only on *nix, as Windows needs different preprocessor defines in static builds
add_library (objects OBJECT ${sources}) if (NOT MINGW)
set_property(TARGET objects PROPERTY POSITION_INDEPENDENT_CODE ON) add_library (objects OBJECT ${sources})
set_property(TARGET objects PROPERTY POSITION_INDEPENDENT_CODE ON)
target_include_directories (objects
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
$<INSTALL_INTERFACE:include>
)
endif ()
if (BUILD_SHARED) if (BUILD_SHARED)
add_library (libzmq SHARED $<TARGET_OBJECTS:objects> ${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 $<TARGET_OBJECTS:objects> ${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. # 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 set_target_properties (libzmq PROPERTIES
COMPILE_DEFINITIONS "DLL_EXPORT" COMPILE_DEFINITIONS "DLL_EXPORT"
...@@ -949,19 +956,22 @@ else () ...@@ -949,19 +956,22 @@ else ()
endif() endif()
if (BUILD_STATIC) if (BUILD_STATIC)
add_library (libzmq-static STATIC $<TARGET_OBJECTS:objects> ${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 $<TARGET_OBJECTS:objects> ${public_headers} ${html-docs} ${readme-docs} ${zmq-pkgconfig} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
endif ()
set_target_properties (libzmq-static PROPERTIES set_target_properties (libzmq-static PROPERTIES
PUBLIC_HEADER "${public_headers}" PUBLIC_HEADER "${public_headers}"
COMPILE_DEFINITIONS "ZMQ_STATIC"
OUTPUT_NAME "zmq" OUTPUT_NAME "zmq"
PREFIX "lib") PREFIX "lib")
endif() endif()
target_include_directories (objects endif ()
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> if (BUILD_STATIC)
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}> target_compile_definitions(libzmq-static
$<INSTALL_INTERFACE:include> PUBLIC ZMQ_STATIC
) )
endif () endif ()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment