Skip to content

Commit a869cb3

Browse files
committed
Use generator expression for iotjs link flags and compile flags
iotjs_add_flags works on list instead of string. Also fixes flags not support MSVC IoT.js-DCO-1.0-Signed-off-by: Yonggang Luo [email protected]
1 parent 7fdafb0 commit a869cb3

File tree

2 files changed

+34
-34
lines changed

2 files changed

+34
-34
lines changed

Diff for: CMakeLists.txt

+17-15
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,12 @@ endif()
5050

5151
macro(iotjs_add_flags VAR)
5252
foreach(_flag ${ARGN})
53-
set(${VAR} "${${VAR}} ${_flag}")
53+
list(APPEND ${VAR} ${_flag})
5454
endforeach()
5555
endmacro()
5656

5757
macro(iotjs_add_compile_flags)
58-
iotjs_add_flags(CMAKE_C_FLAGS ${ARGV})
58+
iotjs_add_flags(IOTJS_COMPILE_FLAGS ${ARGV})
5959
endmacro()
6060

6161
macro(iotjs_add_link_flags)
@@ -67,6 +67,9 @@ macro(build_lib_name LIB_VAR NAME)
6767
${CMAKE_STATIC_LIBRARY_PREFIX}${NAME}${CMAKE_STATIC_LIBRARY_SUFFIX})
6868
endmacro()
6969

70+
set(IOTJS_CONFIG_IS_DEBUG $<CONFIG:Debug>)
71+
set(IOTJS_CONFIG_NOT_DEBUG $<NOT:$<CONFIG:Debug>>)
72+
7073
if(CMAKE_C_COMPILER_ID MATCHES "MSVC")
7174
set(USING_MSVC 1)
7275
set(CONFIG_TYPE $<$<CONFIG:Debug>:Debug>$<$<CONFIG:Release>:Release>)
@@ -83,22 +86,19 @@ endif()
8386
CHECK_C_COMPILER_FLAG(-no-pie HAS_NO_PIE)
8487

8588
# Add buildtype-related flags
86-
if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
87-
iotjs_add_compile_flags(-DDEBUG -DENABLE_DEBUG_LOG)
88-
if(HAS_NO_PIE AND NOT "${TARGET_OS}" STREQUAL "darwin")
89-
iotjs_add_link_flags(-no-pie)
90-
endif()
91-
else()
92-
93-
iotjs_add_compile_flags(-fPIE)
89+
if(HAS_NO_PIE)
90+
iotjs_add_compile_flags($<${IOTJS_CONFIG_NOT_DEBUG}:-fPIE>)
9491
if("${TARGET_OS}" STREQUAL "darwin")
95-
iotjs_add_link_flags(-Wl,-pie)
92+
iotjs_add_link_flags($<${IOTJS_CONFIG_IS_DEBUG}:-no-pie>$<${IOTJS_CONFIG_NOT_DEBUG}:-Wl,-pie>)
9693
else()
97-
iotjs_add_link_flags(-pie)
94+
iotjs_add_link_flags($<${IOTJS_CONFIG_IS_DEBUG}:>$<${IOTJS_CONFIG_NOT_DEBUG}:-pie>)
9895
endif()
9996
endif()
10097

101-
if (CREATE_SHARED_LIB)
98+
iotjs_add_compile_flags($<${IOTJS_CONFIG_IS_DEBUG}:-DDEBUG>)
99+
iotjs_add_compile_flags($<${IOTJS_CONFIG_IS_DEBUG}:-DENABLE_DEBUG_LOG>)
100+
101+
if (CREATE_SHARED_LIB AND NOT USING_MSVC)
102102
iotjs_add_compile_flags(-fPIC)
103103
endif()
104104

@@ -198,11 +198,13 @@ endif()
198198

199199
# Add external options
200200
if(DEFINED EXTERNAL_COMPILE_FLAGS)
201-
iotjs_add_compile_flags(${EXTERNAL_COMPILE_FLAGS})
201+
separate_arguments(EXTERNAL_COMPILE_FLAGS_LIST NATIVE_COMMAND "${EXTERNAL_COMPILE_FLAGS}")
202+
iotjs_add_compile_flags(${EXTERNAL_COMPILE_FLAGS_LIST})
202203
endif()
203204

204205
if(DEFINED EXTERNAL_LINKER_FLAGS)
205-
iotjs_add_link_flags(${EXTERNAL_LINKER_FLAGS})
206+
separate_arguments(EXTERNAL_LINKER_FLAGS_LIST NATIVE_COMMAND "${EXTERNAL_LINKER_FLAGS}")
207+
iotjs_add_link_flags(${EXTERNAL_LINKER_FLAGS_LIST})
206208
endif()
207209

208210
string(TOUPPER "${TARGET_OS}" TARGET_OS)

Diff for: cmake/iotjs.cmake

+17-19
Original file line numberDiff line numberDiff line change
@@ -448,11 +448,11 @@ set(IOTJS_INCLUDE_DIRS
448448

449449
if(NOT BUILD_LIB_ONLY)
450450
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
451-
iotjs_add_link_flags("-Xlinker -map -Xlinker iotjs.map")
451+
iotjs_add_link_flags(-Xlinker -map -Xlinker iotjs.map)
452452
elseif(USING_MSVC)
453-
iotjs_add_link_flags("/MAP:iotjs.map")
453+
iotjs_add_link_flags("-MAP:iotjs.map")
454454
else()
455-
iotjs_add_link_flags("-Xlinker -Map -Xlinker iotjs.map")
455+
iotjs_add_link_flags(-Xlinker -Map=iotjs.map)
456456
endif()
457457
endif()
458458

@@ -469,6 +469,7 @@ message(STATUS "EXTERNAL_INCLUDE_DIR ${EXTERNAL_INCLUDE_DIR}")
469469
message(STATUS "EXTERNAL_LIBC_INTERFACE ${EXTERNAL_LIBC_INTERFACE}")
470470
message(STATUS "EXTERNAL_LIBS ${EXTERNAL_LIBS}")
471471
message(STATUS "EXTERNAL_MODULES ${EXTERNAL_MODULES}")
472+
message(STATUS "IOTJS_COMPILE_FLAGS ${IOTJS_COMPILE_FLAGS}")
472473
message(STATUS "IOTJS_LINKER_FLAGS ${IOTJS_LINKER_FLAGS}")
473474
message(STATUS "IOTJS_PROFILE ${IOTJS_PROFILE}")
474475
message(STATUS "JERRY_DEBUGGER ${JERRY_DEBUGGER}")
@@ -515,22 +516,17 @@ else()
515516
file(READ "${IOTJS_SOURCE_DIR}/napi/node_symbols.txt" NODE_SYMBOLS)
516517
string(REGEX REPLACE "[\r|\n]" ";" NODE_SYMBOLS "${NODE_SYMBOLS}")
517518

518-
if(USING_MSVC)
519-
set(NODE_SYMBOL_SEPARATOR " /INCLUDE:")
520-
if("${TARGET_ARCH}" STREQUAL "i686")
521-
set(NODE_SYMBOL_SEPARATOR "${NODE_SYMBOL_SEPARATOR}_")
522-
endif()
523-
else()
524-
set(NODE_SYMBOLS_LINK_FLAGS "-Wl")
525-
set(NODE_SYMBOL_SEPARATOR ",-u,")
526-
endif()
527-
528519
foreach(NODE_SYMBOL ${NODE_SYMBOLS})
529-
set(NODE_SYMBOLS_LINK_FLAGS
530-
"${NODE_SYMBOLS_LINK_FLAGS}${NODE_SYMBOL_SEPARATOR}${NODE_SYMBOL}")
531-
endforeach()
532-
533-
iotjs_add_link_flags(${NODE_SYMBOLS_LINK_FLAGS})
520+
if(USING_MSVC)
521+
set(NODE_SYMBOL_PREFIX "-INCLUDE:")
522+
if("${TARGET_ARCH}" STREQUAL "i686")
523+
set(NODE_SYMBOL_PREFIX "${NODE_SYMBOL_PREFIX}_")
524+
endif()
525+
iotjs_add_link_flags("${NODE_SYMBOL_PREFIX}${NODE_SYMBOL}")
526+
else()
527+
iotjs_add_link_flags("-Wl,-u,${NODE_SYMBOL}")
528+
endif()
529+
endforeach()
534530
endif()
535531
endif(CREATE_SHARED_LIB)
536532

@@ -557,6 +553,7 @@ target_link_libraries(${TARGET_LIB_IOTJS}
557553
${MBEDTLS_LIBS}
558554
${EXTERNAL_LIBS}
559555
)
556+
target_compile_options(${TARGET_LIB_IOTJS} PRIVATE ${IOTJS_COMPILE_FLAGS})
560557

561558
if("${LIB_INSTALL_DIR}" STREQUAL "")
562559
set(LIB_INSTALL_DIR "lib")
@@ -575,9 +572,10 @@ if(NOT BUILD_LIB_ONLY)
575572

576573
add_executable(${TARGET_IOTJS} ${ROOT_DIR}/src/platform/linux/iotjs_linux.c)
577574
set_target_properties(${TARGET_IOTJS} PROPERTIES
578-
LINK_FLAGS "${IOTJS_LINKER_FLAGS}"
575+
LINK_FLAGS ${IOTJS_LINKER_FLAGS}
579576
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
580577
)
578+
target_compile_options(${TARGET_IOTJS} PRIVATE ${IOTJS_COMPILE_FLAGS})
581579
target_include_directories(${TARGET_IOTJS} PRIVATE ${IOTJS_INCLUDE_DIRS})
582580
target_link_libraries(${TARGET_IOTJS} ${TARGET_LIB_IOTJS})
583581
install(TARGETS ${TARGET_IOTJS}

0 commit comments

Comments
 (0)