@@ -2,26 +2,29 @@ cmake_minimum_required(VERSION 3.16)
2
2
3
3
macro (set_option_from_env OPTION_NAME )
4
4
string (TOLOWER ${OPTION_NAME} OPTION_NAME_LOWER )
5
+
5
6
if (DEFINED ENV{npm_config_${OPTION_NAME_LOWER}} )
6
7
if ("$ENV{npm_config_${OPTION_NAME_LOWER} }" STREQUAL "true" )
7
8
set ("${OPTION_NAME} "
8
- ON
9
- CACHE BOOL "npm_config_${OPTION_NAME_LOWER} " )
9
+ ON
10
+ CACHE BOOL "npm_config_${OPTION_NAME_LOWER} " )
10
11
elseif ("$ENV{npm_config_${OPTION_NAME_LOWER} }" STREQUAL "false" )
11
12
set ("${OPTION_NAME} "
12
- OFF
13
- CACHE BOOL "npm_config_${OPTION_NAME_LOWER} " )
13
+ OFF
14
+ CACHE BOOL "npm_config_${OPTION_NAME_LOWER} " )
14
15
else ()
15
16
set ("${OPTION_NAME} "
16
- "$ENV{npm_config_${OPTION_NAME_LOWER} }"
17
- CACHE STRING "npm_config_${OPTION_NAME_LOWER} " )
17
+ "$ENV{npm_config_${OPTION_NAME_LOWER} }"
18
+ CACHE STRING "npm_config_${OPTION_NAME_LOWER} " )
18
19
endif ()
19
20
endif ()
21
+
20
22
if (${OPTION_NAME} )
21
23
string (REPLACE "zmq_" "" OPTION_NAME_LOWER "${OPTION_NAME_LOWER} " )
22
24
string (REPLACE "_" "-" OPTION_NAME_LOWER "${OPTION_NAME_LOWER} " )
23
25
list (APPEND VCPKG_MANIFEST_FEATURES ${OPTION_NAME_LOWER} )
24
26
endif ()
27
+
25
28
message (STATUS "${OPTION_NAME} : ${${OPTION_NAME} }" )
26
29
endmacro ()
27
30
@@ -61,13 +64,16 @@ if(WIN32)
61
64
set (CMAKE_SYSTEM_PROCESSOR "$ENV{PROCESSOR_ARCHITECTURE} " )
62
65
set (VCPKG_TARGET_TRIPLET "x64-windows-static" )
63
66
endif ()
67
+
64
68
# Avoid loading of project_optinos/WindowsToolchain
65
69
set (CMAKE_TOOLCHAIN_FILE ";" )
70
+
66
71
# use static runtime library
67
72
set (CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>" )
68
73
endif ()
69
74
70
75
include (FetchContent )
76
+
71
77
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0" )
72
78
cmake_policy (SET CMP0135 NEW )
73
79
endif ()
@@ -88,11 +94,11 @@ include(${_project_options_SOURCE_DIR}/Index.cmake)
88
94
# MacOS flags that should be set prior to any project calls
89
95
if (APPLE )
90
96
set (CMAKE_SHARED_LINKER_FLAGS
91
- "${CMAKE_SHARED_LINKER_FLAGS} -undefined dynamic_lookup" )
97
+ "${CMAKE_SHARED_LINKER_FLAGS} -undefined dynamic_lookup" )
92
98
endif ()
93
99
94
100
run_vcpkg (VCPKG_URL "https://github.com/microsoft/vcpkg.git" VCPKG_REV
95
- "ee2d2a100103e0f3613c60655dcf15be7d5157b8" )
101
+ "ee2d2a100103e0f3613c60655dcf15be7d5157b8" )
96
102
97
103
# Name of the project (will be the name of the plugin)
98
104
project (addon LANGUAGES C CXX )
@@ -103,15 +109,17 @@ file(GLOB_RECURSE SOURCES "./src/*.cc")
103
109
add_library (addon SHARED ${SOURCES} )
104
110
105
111
if (CMAKE_CXX_COMPILER_ID STREQUAL GNU
106
- OR CMAKE_CXX_COMPILER_ID STREQUAL Clang
107
- OR CMAKE_CXX_COMPILER_ID STREQUAL AppleClang )
112
+ OR CMAKE_CXX_COMPILER_ID STREQUAL Clang
113
+ OR CMAKE_CXX_COMPILER_ID STREQUAL AppleClang )
108
114
target_compile_options (project_warnings INTERFACE "-Wno-shadow" )
109
115
endif ()
116
+
110
117
target_link_libraries (addon PRIVATE project_options project_warnings )
111
118
112
119
if (ZMQ_DRAFT )
113
120
target_compile_definitions (addon PRIVATE ZMQ_BUILD_DRAFT_API )
114
121
endif ()
122
+
115
123
if (ZMQ_NO_SYNC_RESOLVE )
116
124
target_compile_definitions (addon PRIVATE ZMQ_NO_SYNC_RESOLVE )
117
125
endif ()
@@ -129,6 +137,7 @@ target_compile_definitions(addon PRIVATE V8_31BIT_SMIS_ON_64BIT_ARCH)
129
137
target_compile_definitions (addon PRIVATE V8_REVERSE_JSARGS )
130
138
target_compile_definitions (addon PRIVATE BUILDING_NODE_EXTENSION )
131
139
target_compile_definitions (addon PRIVATE NAPI_CPP_EXCEPTIONS )
140
+
132
141
if (WIN32 )
133
142
target_compile_definitions (addon PRIVATE "NOMINMAX" )
134
143
target_compile_definitions (addon PRIVATE "NOGDI" )
@@ -140,5 +149,6 @@ set_target_properties(addon PROPERTIES PREFIX "" SUFFIX ".node")
140
149
141
150
# Windows
142
151
if (WIN32 )
152
+ set_property (TARGET addon PROPERTY LINK_FLAGS "-Xlinker /DELAYLOAD:NODE.EXE" )
143
153
target_link_libraries (addon PRIVATE "ShLwApi.lib" "delayimp.lib" )
144
154
endif ()
0 commit comments