-
Notifications
You must be signed in to change notification settings - Fork 24
/
CMakeJS.cmake
57 lines (51 loc) · 1.91 KB
/
CMakeJS.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
if (CMAKE_HOST_WIN32)
find_program(CMakeJS "cmake-js.cmd")
find_program(NPM "npm.cmd")
else ()
find_program(CMakeJS "cmake-js")
find_program(NPM "npm")
endif()
if (NPM)
message(STATUS "Found NPM")
else ()
message(FATAL_ERROR "NPM not found. This project requires Node.js.")
endif ()
if (CMakeJS)
message(STATUS "Found CMake.js")
else ()
message(FATAL_ERROR "CMake.js not found. This project requires cmake-js installed globally.")
endif ()
function(GET_VARIABLE INPUT_STRING VARIABLE_TO_SELECT OUTPUT_VARIABLE)
set(SEARCH_STRING "-D${VARIABLE_TO_SELECT}=")
string(LENGTH ${SEARCH_STRING} SEARCH_STRING_LENGTH)
string(LENGTH ${INPUT_STRING} INPUT_STRING_LENGTH)
string(FIND ${INPUT_STRING} ${SEARCH_STRING} SEARCH_STRING_INDEX)
if (${SEARCH_STRING_INDEX} LESS 0)
set(${OUTPUT_VARIABLE} "" PARENT_SCOPE)
else ()
math(EXPR SEARCH_STRING_INDEX "${SEARCH_STRING_INDEX}+${SEARCH_STRING_LENGTH}")
string(SUBSTRING ${INPUT_STRING} ${SEARCH_STRING_INDEX} ${INPUT_STRING_LENGTH} AFTER_SEARCH_STRING)
string(FIND ${AFTER_SEARCH_STRING} "'" QUOTE_INDEX)
string(SUBSTRING ${AFTER_SEARCH_STRING} 0 ${QUOTE_INDEX} RESULT_STRING)
set(${OUTPUT_VARIABLE} ${RESULT_STRING} PARENT_SCOPE)
endif ()
endfunction(GET_VARIABLE)
string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_LOWER)
if (CMAKE_BUILD_TYPE_LOWER STREQUAL "debug")
exec_program(
${CMakeJS}
${CMAKE_CURRENT_SOURCE_DIR}
ARGS print-configure --debug
OUTPUT_VARIABLE CMAKE_JS_OUTPUT
)
else ()
exec_program(
${CMakeJS}
${CMAKE_CURRENT_SOURCE_DIR}
ARGS print-configure
OUTPUT_VARIABLE CMAKE_JS_OUTPUT
)
endif ()
get_variable(${CMAKE_JS_OUTPUT} "CMAKE_JS_INC" CMAKE_JS_INC)
get_variable(${CMAKE_JS_OUTPUT} "CMAKE_JS_LIB" CMAKE_JS_LIB)
get_variable(${CMAKE_JS_OUTPUT} "CMAKE_JS_SRC" CMAKE_JS_SRC)