@@ -21,6 +21,11 @@ project (pulsar-client-python)
21
21
cmake_minimum_required (VERSION 3.18)
22
22
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR} /cmake_modules" )
23
23
24
+ if (VCPKG_TRIPLET)
25
+ message (STATUS "Use vcpkg, triplet is ${VCPKG_TRIPLET} " )
26
+ set (CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR} /vcpkg_installed/${VCPKG_TRIPLET} " ${CMAKE_PREFIX_PATH} )
27
+ message (STATUS "Use CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH} " )
28
+ endif ()
24
29
option (LINK_STATIC "Link against static libraries" OFF )
25
30
MESSAGE (STATUS "LINK_STATIC: " ${LINK_STATIC} )
26
31
@@ -29,10 +34,22 @@ set(THREADS_PREFER_PTHREAD_FLAG TRUE)
29
34
find_package (Threads REQUIRED)
30
35
MESSAGE (STATUS "Threads library: " ${CMAKE_THREAD_LIBS_INIT} )
31
36
37
+ if (MSVC )
38
+ add_compile_options (/wd4819)
39
+ endif ()
40
+
32
41
if (LINK_STATIC)
33
- find_library (PULSAR_LIBRARY NAMES libpulsar.a)
42
+ if (MSVC )
43
+ find_library (PULSAR_LIBRARY NAMES pulsarWithDeps.lib)
44
+ string (REGEX REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG} )
45
+ string (REGEX REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE} )
46
+ string (REGEX REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} )
47
+ else ()
48
+ find_library (PULSAR_LIBRARY NAMES libpulsar.a)
49
+ endif ()
50
+ add_definitions ("-DPULSAR_STATIC" )
34
51
else ()
35
- find_library (PULSAR_LIBRARY NAMES libpulsar.so libpulsar.dylib )
52
+ find_library (PULSAR_LIBRARY NAMES pulsar libpulsar)
36
53
endif ()
37
54
message (STATUS "PULSAR_LIBRARY: ${PULSAR_LIBRARY} " )
38
55
@@ -44,10 +61,29 @@ SET(CMAKE_CXX_STANDARD 11)
44
61
find_package (Python3 REQUIRED COMPONENTS Development.Module)
45
62
MESSAGE (STATUS "PYTHON: " ${Python3_VERSION} " - " ${Python3_INCLUDE_DIRS} )
46
63
64
+ find_package (Boost REQUIRED ${Boost_INCLUDE_DIRS} )
65
+ message (STATUS "Boost_INCLUDE_DIRS: ${Boost_INCLUDE_DIRS} " )
66
+
47
67
SET (Boost_USE_STATIC_LIBS ${LINK_STATIC} )
48
- find_package (Boost REQUIRED COMPONENTS python3)
49
- MESSAGE (STATUS "Boost Python3: " ${Boost_PYTHON3_LIBRARY} )
50
- MESSAGE (STATUS "Boost_INCLUDE_DIRS: ${Boost_INCLUDE_DIRS} " )
68
+
69
+ set (BOOST_PYTHON_NAME_LIST python3 python310)
70
+ foreach (BOOST_PYTHON_NAME IN LISTS BOOST_PYTHON_NAME_LIST)
71
+ find_package (Boost QUIET COMPONENTS ${BOOST_PYTHON_NAME} )
72
+ if (${Boost_FOUND} )
73
+ set (BOOST_PYTHON_NAME_FOUND ${BOOST_PYTHON_NAME} )
74
+ message (STATUS "Found Boost COMPONENTS " ${BOOST_PYTHON_NAME_FOUND} )
75
+ break ()
76
+ endif ()
77
+ endforeach ()
78
+ if (NOT BOOST_PYTHON_NAME_FOUND)
79
+ message (FATAL_ERROR "Could not find Boost Python library" )
80
+ endif ()
81
+ find_package (Boost REQUIRED COMPONENTS ${BOOST_PYTHON_NAME_FOUND} )
82
+ set (Boost_PYTHON3_LIBRARIES
83
+ ${Boost_PYTHON3_LIBRARY}
84
+ ${Boost_PYTHON310_LIBRARY}
85
+ )
86
+ MESSAGE (STATUS "Boost Python3: " ${Boost_PYTHON3_LIBRARIES} )
51
87
52
88
########################################################################################################################
53
89
@@ -68,8 +104,11 @@ ADD_LIBRARY(_pulsar SHARED src/pulsar.cc
68
104
src/utils.cc
69
105
)
70
106
71
- SET (CMAKE_SHARED_LIBRARY_PREFIX )
72
- SET (CMAKE_SHARED_LIBRARY_SUFFIX .so)
107
+ if (MSVC )
108
+ set (CMAKE_SHARED_LIBRARY_SUFFIX .pyd)
109
+ else ()
110
+ set (CMAKE_SHARED_LIBRARY_SUFFIX .so)
111
+ endif ()
73
112
74
113
if (NOT APPLE AND NOT MSVC )
75
114
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_PYTHON} " )
@@ -80,12 +119,17 @@ if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
80
119
endif ()
81
120
82
121
# Try all possible boost-python variable namings
83
- set (PYTHON_WRAPPER_LIBS ${PULSAR_LIBRARY}
84
- ${Boost_PYTHON3_LIBRARY} )
122
+ set (PYTHON_WRAPPER_LIBS
123
+ ${PULSAR_LIBRARY}
124
+ ${Boost_PYTHON3_LIBRARIES} )
125
+ if (MSVC )
126
+ message (STATUS "Python3_LIBRARIES: " ${Python3_LIBRARIES} )
127
+ set (PYTHON_WRAPPER_LIBS ${PYTHON_WRAPPER_LIBS} ${Python3_LIBRARIES} )
128
+ endif ()
85
129
86
130
message (STATUS "All libraries: ${PYTHON_WRAPPER_LIBS} " )
87
131
88
- if (LINK_STATIC)
132
+ if (LINK_STATIC AND NOT MSVC )
89
133
set (CMAKE_FIND_LIBRARY_SUFFIXES ".a" )
90
134
91
135
# We need to include all the static libs individually because we cannot easily create a universal2 libpulsar.a
0 commit comments