@@ -13,74 +13,76 @@ set(CMAKE_VERBOSE_MAKEFILE ON)
13
13
14
14
# project
15
15
execute_process (COMMAND node -p "require('./package.json').version"
16
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
17
- OUTPUT_VARIABLE VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
16
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
17
+ OUTPUT_VARIABLE VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
18
18
project (sapnwrfc)
19
19
set (PROJECT_VERSION ${VERSION} )
20
20
21
21
# node platform
22
22
execute_process (COMMAND node -p "process.platform"
23
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
24
- OUTPUT_VARIABLE NODE_PLATFORM OUTPUT_STRIP_TRAILING_WHITESPACE)
23
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
24
+ OUTPUT_VARIABLE NODE_PLATFORM OUTPUT_STRIP_TRAILING_WHITESPACE)
25
25
26
26
# node version
27
- execute_process (COMMAND node -v WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE NODE_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE )
27
+ execute_process (COMMAND node -v WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE NODE_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
28
28
29
29
# node abi version
30
30
execute_process (COMMAND node -p "process.versions.modules"
31
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
32
- OUTPUT_VARIABLE NODE_ABI_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
31
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
32
+ OUTPUT_VARIABLE NODE_ABI_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
33
33
34
34
# N-API version
35
- execute_process (COMMAND node -p "require('./package.json').binary.napi_versions[0] "
36
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
37
- OUTPUT_VARIABLE NAPI_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
35
+ execute_process (COMMAND node -p "process.versions.napi "
36
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
37
+ OUTPUT_VARIABLE NAPI_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
38
38
add_compile_definitions (NAPI_VERSION=${NAPI_VERSION} )
39
39
40
40
# N-API headers
41
41
execute_process (COMMAND node -p "require('node-addon-api').include"
42
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
43
- OUTPUT_VARIABLE NAPI_INCLUDE_DIR
44
- OUTPUT_STRIP_TRAILING_WHITESPACE )
42
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
43
+ OUTPUT_VARIABLE NAPI_INCLUDE_DIR
44
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
45
45
string (REPLACE "\" " "" NAPI_INCLUDE_DIR ${NAPI_INCLUDE_DIR} )
46
46
47
47
# NodeJS headers
48
- if (NOT DEFINED ENV{NODE_HEADERS_INCLUDE_DIR})
49
- if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows" )
50
- execute_process (COMMAND cmd /c "npm -g prefix"
51
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
52
- OUTPUT_VARIABLE NODE_HEADERS_INCLUDE_DIR
53
- OUTPUT_STRIP_TRAILING_WHITESPACE )
54
- else ()
55
- execute_process (COMMAND npm -g prefix
56
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
57
- OUTPUT_VARIABLE NODE_HEADERS_INCLUDE_DIR
58
- OUTPUT_STRIP_TRAILING_WHITESPACE )
59
- endif ()
48
+ if (NOT DEFINED ENV{NODE_HEADERS_INCLUDE_DIR})
49
+ if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows" )
50
+ execute_process (COMMAND cmd /c "npm -g prefix"
51
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
52
+ OUTPUT_VARIABLE NODE_HEADERS_INCLUDE_DIR
53
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
54
+ else ()
55
+ execute_process (COMMAND npm -g prefix
56
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
57
+ OUTPUT_VARIABLE NODE_HEADERS_INCLUDE_DIR
58
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
59
+ endif ()
60
+
60
61
string (CONCAT NODE_HEADERS_INCLUDE_DIR ${NODE_HEADERS_INCLUDE_DIR} "/include" )
61
62
62
- if (NOT EXISTS "${NODE_HEADERS_INCLUDE_DIR} " )
63
+ if (NOT EXISTS "${NODE_HEADERS_INCLUDE_DIR} " )
63
64
set (NODE_HEADERS_FILENAME "node-${NODE_VERSION} -headers.tar.gz" )
64
65
set (NODE_HEADERS_DOWNLD_PATH ${CMAKE_CURRENT_BINARY_DIR} /${NODE_HEADERS_FILENAME} )
65
66
message ("Downloading ${NODE_HEADERS_FILENAME} to ${NODE_HEADERS_DOWNLD_PATH} ..." )
66
- file (DOWNLOAD "https://nodejs.org/download/release/${NODE_VERSION} /${NODE_HEADERS_FILENAME} " "${NODE_HEADERS_DOWNLD_PATH} " ) # SHOW_PROGRESS)
67
+ file (DOWNLOAD "https://nodejs.org/download/release/${NODE_VERSION} /${NODE_HEADERS_FILENAME} " "${NODE_HEADERS_DOWNLD_PATH} " ) # SHOW_PROGRESS)
67
68
68
69
file (ARCHIVE_EXTRACT INPUT ${NODE_HEADERS_DOWNLD_PATH} VERBOSE)
69
70
file (REMOVE ${NODE_HEADERS_DOWNLD_PATH} )
70
71
file (RENAME "${CMAKE_CURRENT_BINARY_DIR} /node-${NODE_VERSION} /include" "${NODE_HEADERS_INCLUDE_DIR} " )
71
72
file (REMOVE_RECURSE "${CMAKE_CURRENT_BINARY_DIR} /node-${NODE_VERSION} " )
72
73
endif ()
73
- else ()
74
+ else ()
74
75
set (NODE_HEADERS_INCLUDE_DIR $ENV{NODE_HEADERS_INCLUDE_DIR} )
75
76
endif ()
76
77
77
78
# build and binding path
78
- string (CONCAT ADDON_BINDING_PATH "node-v" ${NODE_ABI_VERSION} "-" ${NODE_PLATFORM} "-" ${NODE_ARCH} )
79
+ string (CONCAT ADDON_BINDING_PATH "node-v" ${NODE_ABI_VERSION} "-" ${NODE_PLATFORM} "-" ${NODE_ARCH} )
79
80
set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR} /lib/binding/)
80
81
81
82
# sapnwrfc dependencies
82
83
set (SAPNWRFC_INCLUDE_DIR $ENV{SAPNWRFC_HOME} /include )
83
84
set (SAPNWRFC_LIB_DIR $ENV{SAPNWRFC_HOME} /lib)
85
+
84
86
if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows" )
85
87
set (SAPNWRFC_LIB_FILES sapnwrfc.lib libsapucum.lib)
86
88
else ()
@@ -91,18 +93,17 @@ endif()
91
93
add_library (${PROJECT_NAME} SHARED src/Client.cc src/nwrfcsdk.cc src/Pool.cc src/Throughput.cc src/Server.cc src/addon.cc)
92
94
93
95
# build path ignored on Windows, copy after build
94
- if ( MSVC )
96
+ if ( MSVC )
95
97
add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD
96
98
COMMAND "${CMAKE_COMMAND} " -E copy
97
- "$<TARGET_FILE:${PROJECT_NAME} >"
98
- "${CMAKE_LIBRARY_OUTPUT_DIRECTORY} \\ $<TARGET_FILE_NAME:${PROJECT_NAME} >"
99
- COMMENT "Copying to output directory" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} )
100
- endif ( MSVC )
99
+ "$<TARGET_FILE:${PROJECT_NAME} >"
100
+ "${CMAKE_LIBRARY_OUTPUT_DIRECTORY} \\ $<TARGET_FILE_NAME:${PROJECT_NAME} >"
101
+ COMMENT "Copying to output directory" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} )
102
+ endif ( MSVC )
101
103
102
104
#
103
105
# build
104
106
#
105
-
106
107
message ("N-API version: ${NAPI_VERSION} ${NODE_HEADERS_INCLUDE_DIR} " )
107
108
108
109
# All platforms
@@ -118,9 +119,7 @@ target_compile_definitions(${PROJECT_NAME} PUBLIC
118
119
NAPI_CPP_EXCEPTIONS)
119
120
120
121
# target_compile_options(${PROJECT_NAME} PUBLIC -fexceptions)
121
-
122
122
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" )
123
-
124
123
# show SAP NWRFC SDK version
125
124
execute_process (COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR} /ci/utils/nwrfcsdk-version -linux.sh OUTPUT_VARIABLE SAPNWRFCSDK_VERSION)
126
125
message ("SAP NWRFC SDK: " ${SAPNWRFCSDK_VERSION} )
@@ -133,7 +132,6 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
133
132
__NO_MATH_INLINES)
134
133
135
134
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Windows" )
136
-
137
135
# show SAP NWRFC SDK version
138
136
execute_process (
139
137
COMMAND "${CMAKE_CURRENT_SOURCE_DIR} \\ ci\\ utils\\ nwrfcsdk-version.bat"
@@ -158,7 +156,8 @@ elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
158
156
SAPonNT
159
157
_CRT_NON_CONFORMING_SWPRINTFS
160
158
_CRT_SECURE_NO_DEPRECATE
161
- #_CRT_SECURE_NO_WARNINGS
159
+
160
+ # _CRT_SECURE_NO_WARNINGS
162
161
_CRT_NONSTDC_NO_DEPRECATE
163
162
_AFXDLL
164
163
WIN32
@@ -169,14 +168,14 @@ elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
169
168
# https://docs.microsoft.com/en-us/cpp/build/reference/linker-options?view=vs-2019
170
169
target_link_options (${PROJECT_NAME} PUBLIC
171
170
/NXCOMPAT
172
- /SWAPRUN:NET
173
- /OPT:REF
174
- /NOLOGO
171
+ /SWAPRUN:NET
172
+ /OPT:REF
173
+ /NOLOGO
175
174
/LTCG
176
175
)
177
176
178
- if (${NODE_ARCH} STREQUAL "ia32" )
179
- target_compile_definitions (${PROJECT_NAME} PUBLIC _X86_ )
177
+ if (${NODE_ARCH} STREQUAL "ia32" )
178
+ target_compile_definitions (${PROJECT_NAME} PUBLIC _X86_)
180
179
181
180
target_link_options (${PROJECT_NAME} PUBLIC
182
181
-STACK:0x800000
@@ -185,7 +184,7 @@ elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
185
184
-LARGEADDRESSAWARE
186
185
)
187
186
else ()
188
- target_compile_definitions (${PROJECT_NAME} PUBLIC WIN64 _AMD64_ )
187
+ target_compile_definitions (${PROJECT_NAME} PUBLIC WIN64 _AMD64_)
189
188
190
189
target_link_options (${PROJECT_NAME} PUBLIC
191
190
-STACK:0x2000000
@@ -195,20 +194,17 @@ elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
195
194
)
196
195
endif ()
197
196
198
-
199
197
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin" )
200
-
201
198
# show SAP NWRFC SDK version
202
199
execute_process (COMMAND bash "${CMAKE_CURRENT_SOURCE_DIR} /ci/utils/nwrfcsdk-version-darwin.sh"
203
- OUTPUT_VARIABLE SAPNWRFCSDK_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE )
200
+ OUTPUT_VARIABLE SAPNWRFCSDK_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
204
201
message ("SAP NWRFC SDK: " ${SAPNWRFCSDK_VERSION} )
205
202
206
203
target_compile_options (${PROJECT_NAME} PUBLIC -stdlib=libc++ -std=c++0x -Wall -mmacosx-version -min=10.10 -fvisibility=hidden)
207
204
208
205
add_compile_definitions (
209
206
SAPonDARW
210
207
__NO_MATH_INLINES)
211
-
212
208
endif ()
213
209
214
210
# set .node extension without any "lib" prefix
@@ -217,7 +213,7 @@ set_target_properties(${PROJECT_NAME} PROPERTIES
217
213
PREFIX ""
218
214
SUFFIX ".node" )
219
215
220
- set (${PROJECT_NAME} _USE_STATIC_LIBS OFF )
216
+ set (${PROJECT_NAME} _USE_STATIC_LIBS OFF )
221
217
set (CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR} /CMake" )
222
218
223
219
# build target
0 commit comments