Skip to content

Commit

Permalink
Use generator expression for iotjs link flags and compile flags
Browse files Browse the repository at this point in the history
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 luoyonggang@gmail.com
  • Loading branch information
lygstate committed Jan 30, 2021
1 parent 7fdafb0 commit a869cb3
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 34 deletions.
32 changes: 17 additions & 15 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,12 @@ endif()

macro(iotjs_add_flags VAR)
foreach(_flag ${ARGN})
set(${VAR} "${${VAR}} ${_flag}")
list(APPEND ${VAR} ${_flag})
endforeach()
endmacro()

macro(iotjs_add_compile_flags)
iotjs_add_flags(CMAKE_C_FLAGS ${ARGV})
iotjs_add_flags(IOTJS_COMPILE_FLAGS ${ARGV})
endmacro()

macro(iotjs_add_link_flags)
Expand All @@ -67,6 +67,9 @@ macro(build_lib_name LIB_VAR NAME)
${CMAKE_STATIC_LIBRARY_PREFIX}${NAME}${CMAKE_STATIC_LIBRARY_SUFFIX})
endmacro()

set(IOTJS_CONFIG_IS_DEBUG $<CONFIG:Debug>)
set(IOTJS_CONFIG_NOT_DEBUG $<NOT:$<CONFIG:Debug>>)

if(CMAKE_C_COMPILER_ID MATCHES "MSVC")
set(USING_MSVC 1)
set(CONFIG_TYPE $<$<CONFIG:Debug>:Debug>$<$<CONFIG:Release>:Release>)
Expand All @@ -83,22 +86,19 @@ endif()
CHECK_C_COMPILER_FLAG(-no-pie HAS_NO_PIE)

# Add buildtype-related flags
if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
iotjs_add_compile_flags(-DDEBUG -DENABLE_DEBUG_LOG)
if(HAS_NO_PIE AND NOT "${TARGET_OS}" STREQUAL "darwin")
iotjs_add_link_flags(-no-pie)
endif()
else()

iotjs_add_compile_flags(-fPIE)
if(HAS_NO_PIE)
iotjs_add_compile_flags($<${IOTJS_CONFIG_NOT_DEBUG}:-fPIE>)
if("${TARGET_OS}" STREQUAL "darwin")
iotjs_add_link_flags(-Wl,-pie)
iotjs_add_link_flags($<${IOTJS_CONFIG_IS_DEBUG}:-no-pie>$<${IOTJS_CONFIG_NOT_DEBUG}:-Wl,-pie>)
else()
iotjs_add_link_flags(-pie)
iotjs_add_link_flags($<${IOTJS_CONFIG_IS_DEBUG}:>$<${IOTJS_CONFIG_NOT_DEBUG}:-pie>)
endif()
endif()

if (CREATE_SHARED_LIB)
iotjs_add_compile_flags($<${IOTJS_CONFIG_IS_DEBUG}:-DDEBUG>)
iotjs_add_compile_flags($<${IOTJS_CONFIG_IS_DEBUG}:-DENABLE_DEBUG_LOG>)

if (CREATE_SHARED_LIB AND NOT USING_MSVC)
iotjs_add_compile_flags(-fPIC)
endif()

Expand Down Expand Up @@ -198,11 +198,13 @@ endif()

# Add external options
if(DEFINED EXTERNAL_COMPILE_FLAGS)
iotjs_add_compile_flags(${EXTERNAL_COMPILE_FLAGS})
separate_arguments(EXTERNAL_COMPILE_FLAGS_LIST NATIVE_COMMAND "${EXTERNAL_COMPILE_FLAGS}")
iotjs_add_compile_flags(${EXTERNAL_COMPILE_FLAGS_LIST})
endif()

if(DEFINED EXTERNAL_LINKER_FLAGS)
iotjs_add_link_flags(${EXTERNAL_LINKER_FLAGS})
separate_arguments(EXTERNAL_LINKER_FLAGS_LIST NATIVE_COMMAND "${EXTERNAL_LINKER_FLAGS}")
iotjs_add_link_flags(${EXTERNAL_LINKER_FLAGS_LIST})
endif()

string(TOUPPER "${TARGET_OS}" TARGET_OS)
Expand Down
36 changes: 17 additions & 19 deletions cmake/iotjs.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -448,11 +448,11 @@ set(IOTJS_INCLUDE_DIRS

if(NOT BUILD_LIB_ONLY)
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
iotjs_add_link_flags("-Xlinker -map -Xlinker iotjs.map")
iotjs_add_link_flags(-Xlinker -map -Xlinker iotjs.map)
elseif(USING_MSVC)
iotjs_add_link_flags("/MAP:iotjs.map")
iotjs_add_link_flags("-MAP:iotjs.map")
else()
iotjs_add_link_flags("-Xlinker -Map -Xlinker iotjs.map")
iotjs_add_link_flags(-Xlinker -Map=iotjs.map)
endif()
endif()

Expand All @@ -469,6 +469,7 @@ message(STATUS "EXTERNAL_INCLUDE_DIR ${EXTERNAL_INCLUDE_DIR}")
message(STATUS "EXTERNAL_LIBC_INTERFACE ${EXTERNAL_LIBC_INTERFACE}")
message(STATUS "EXTERNAL_LIBS ${EXTERNAL_LIBS}")
message(STATUS "EXTERNAL_MODULES ${EXTERNAL_MODULES}")
message(STATUS "IOTJS_COMPILE_FLAGS ${IOTJS_COMPILE_FLAGS}")
message(STATUS "IOTJS_LINKER_FLAGS ${IOTJS_LINKER_FLAGS}")
message(STATUS "IOTJS_PROFILE ${IOTJS_PROFILE}")
message(STATUS "JERRY_DEBUGGER ${JERRY_DEBUGGER}")
Expand Down Expand Up @@ -515,22 +516,17 @@ else()
file(READ "${IOTJS_SOURCE_DIR}/napi/node_symbols.txt" NODE_SYMBOLS)
string(REGEX REPLACE "[\r|\n]" ";" NODE_SYMBOLS "${NODE_SYMBOLS}")

if(USING_MSVC)
set(NODE_SYMBOL_SEPARATOR " /INCLUDE:")
if("${TARGET_ARCH}" STREQUAL "i686")
set(NODE_SYMBOL_SEPARATOR "${NODE_SYMBOL_SEPARATOR}_")
endif()
else()
set(NODE_SYMBOLS_LINK_FLAGS "-Wl")
set(NODE_SYMBOL_SEPARATOR ",-u,")
endif()

foreach(NODE_SYMBOL ${NODE_SYMBOLS})
set(NODE_SYMBOLS_LINK_FLAGS
"${NODE_SYMBOLS_LINK_FLAGS}${NODE_SYMBOL_SEPARATOR}${NODE_SYMBOL}")
endforeach()

iotjs_add_link_flags(${NODE_SYMBOLS_LINK_FLAGS})
if(USING_MSVC)
set(NODE_SYMBOL_PREFIX "-INCLUDE:")
if("${TARGET_ARCH}" STREQUAL "i686")
set(NODE_SYMBOL_PREFIX "${NODE_SYMBOL_PREFIX}_")
endif()
iotjs_add_link_flags("${NODE_SYMBOL_PREFIX}${NODE_SYMBOL}")
else()
iotjs_add_link_flags("-Wl,-u,${NODE_SYMBOL}")
endif()
endforeach()
endif()
endif(CREATE_SHARED_LIB)

Expand All @@ -557,6 +553,7 @@ target_link_libraries(${TARGET_LIB_IOTJS}
${MBEDTLS_LIBS}
${EXTERNAL_LIBS}
)
target_compile_options(${TARGET_LIB_IOTJS} PRIVATE ${IOTJS_COMPILE_FLAGS})

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

add_executable(${TARGET_IOTJS} ${ROOT_DIR}/src/platform/linux/iotjs_linux.c)
set_target_properties(${TARGET_IOTJS} PROPERTIES
LINK_FLAGS "${IOTJS_LINKER_FLAGS}"
LINK_FLAGS ${IOTJS_LINKER_FLAGS}
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
target_compile_options(${TARGET_IOTJS} PRIVATE ${IOTJS_COMPILE_FLAGS})
target_include_directories(${TARGET_IOTJS} PRIVATE ${IOTJS_INCLUDE_DIRS})
target_link_libraries(${TARGET_IOTJS} ${TARGET_LIB_IOTJS})
install(TARGETS ${TARGET_IOTJS}
Expand Down

0 comments on commit a869cb3

Please sign in to comment.