Skip to content

Commit 1bd2c93

Browse files
committed
Fix building iotjs with ninja+MSVC
Testing MSVC generator and setup CONFIG_TYPE properly Add BUILD_BYPRODUCTS to ExternalProject_Add for building with Ninja IoT.js-DCO-1.0-Signed-off-by: Yonggang Luo [email protected]
1 parent 7fdafb0 commit 1bd2c93

File tree

5 files changed

+43
-17
lines changed

5 files changed

+43
-17
lines changed

CMakeLists.txt

+7-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,13 @@ if(NOT DEFINED TARGET_OS)
2626
"TARGET_OS not specified, using '${TARGET_OS}' from CMAKE_SYSTEM_NAME")
2727
endif()
2828

29+
if(CMAKE_GENERATOR MATCHES "Visual Studio")
30+
set(CONFIG_TYPE $<$<CONFIG:Debug>:Debug>)
31+
set(CONFIG_TYPE ${CONFIG_TYPE}$<$<CONFIG:Release>:Release>)
32+
set(CONFIG_TYPE ${CONFIG_TYPE}$<$<CONFIG:RelWithDebInfo>:RelWithDebInfo>)
33+
set(CONFIG_TYPE ${CONFIG_TYPE}$<$<CONFIG:MinSizeRel>:MinSizeRel>)
34+
endif()
35+
2936
if(NOT CMAKE_BUILD_TYPE)
3037
message("CMAKE_BUILD_TYPE was not set! Configuring for Debug build!")
3138
set(CMAKE_BUILD_TYPE Debug)
@@ -69,7 +76,6 @@ endmacro()
6976

7077
if(CMAKE_C_COMPILER_ID MATCHES "MSVC")
7178
set(USING_MSVC 1)
72-
set(CONFIG_TYPE $<$<CONFIG:Debug>:Debug>$<$<CONFIG:Release>:Release>)
7379
# disable warning C4820: 'x' bytes padding added after construct 'membername'
7480
iotjs_add_compile_flags(-wd4820)
7581
# disable warning C4668: 'symbol' is not defined as preprocessor macro,

cmake/http-parser.cmake

+1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ ExternalProject_Add(http-parser
3838
-DOS=${TARGET_OS}
3939
${HTTPPARSER_NUTTX_ARG}
4040
-DENABLE_MEMORY_CONSTRAINTS=ON
41+
BUILD_BYPRODUCTS ${CMAKE_BINARY_DIR}/lib/${HTTPPARSER_NAME}
4142
)
4243
add_library(libhttp-parser STATIC IMPORTED)
4344
add_dependencies(libhttp-parser http-parser)

cmake/jerry.cmake

+27-13
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@ cmake_minimum_required(VERSION 2.8)
1616

1717
# Host jerry for snapshot generation
1818
set(DEPS_HOST_JERRY deps/jerry-host)
19+
20+
set(JERRY_HOST_SNAPSHOT
21+
${CMAKE_BINARY_DIR}/${DEPS_HOST_JERRY}/bin/jerry-snapshot)
22+
23+
set(JERRY_HOST_BUILD_BYPRODUCTS
24+
${JERRY_HOST_SNAPSHOT}
25+
)
26+
1927
ExternalProject_Add(hostjerry
2028
PREFIX ${DEPS_HOST_JERRY}
2129
SOURCE_DIR ${ROOT_DIR}/deps/jerry/
@@ -45,9 +53,8 @@ ExternalProject_Add(hostjerry
4553
# can not be represented correctly in the JerryScript engine
4654
# currently.
4755
-DJERRY_SYSTEM_ALLOCATOR=OFF
56+
BUILD_BYPRODUCTS ${JERRY_HOST_BUILD_BYPRODUCTS}
4857
)
49-
set(JERRY_HOST_SNAPSHOT
50-
${CMAKE_BINARY_DIR}/${DEPS_HOST_JERRY}/bin/jerry-snapshot)
5158
add_executable(jerry-snapshot IMPORTED)
5259
add_dependencies(jerry-snapshot hostjerry)
5360
set_property(TARGET jerry-snapshot PROPERTY
@@ -118,6 +125,22 @@ separate_arguments(EXTRA_JERRY_CMAKE_PARAMS)
118125
build_lib_name(JERRY_CORE_NAME jerry-core)
119126
build_lib_name(JERRY_LIBM_NAME jerry-libm)
120127
build_lib_name(JERRY_EXT_NAME jerry-ext)
128+
build_lib_name(JERRY_PORT_DEFAULT_NAME jerry-port-default)
129+
build_lib_name(JERRY_PORT_DEFAULT_MINIMAL_NAME jerry-port-default-minimal)
130+
131+
set(JERRY_LIB_BUILD_BYPRODUCTS
132+
${CMAKE_BINARY_DIR}/lib/${JERRY_CORE_NAME}
133+
${CMAKE_BINARY_DIR}/lib/${JERRY_LIBM_NAME}
134+
${CMAKE_BINARY_DIR}/lib/${JERRY_EXT_NAME}
135+
)
136+
137+
if(NOT "${TARGET_OS}" MATCHES "NUTTX|TIZENRT")
138+
list(APPEND JERRY_LIB_BUILD_BYPRODUCTS
139+
${CMAKE_BINARY_DIR}/lib/${JERRY_PORT_DEFAULT_NAME}
140+
${CMAKE_BINARY_DIR}/lib/${JERRY_PORT_DEFAULT_MINIMAL_NAME}
141+
)
142+
endif()
143+
121144

122145
set(DEPS_LIB_JERRY deps/jerry)
123146
set(DEPS_LIB_JERRY_SRC ${ROOT_DIR}/${DEPS_LIB_JERRY})
@@ -146,13 +169,11 @@ ExternalProject_Add(libjerry
146169
-DENABLE_LTO=${ENABLE_LTO}
147170
${DEPS_LIB_JERRY_ARGS}
148171
${EXTRA_JERRY_CMAKE_PARAMS}
172+
BUILD_BYPRODUCTS ${JERRY_LIB_BUILD_BYPRODUCTS}
149173
)
150174

151175
set_property(DIRECTORY APPEND PROPERTY
152-
ADDITIONAL_MAKE_CLEAN_FILES
153-
${CMAKE_BINARY_DIR}/lib/${JERRY_CORE_NAME}
154-
${CMAKE_BINARY_DIR}/lib/${JERRY_LIBM_NAME}
155-
${CMAKE_BINARY_DIR}/lib/${JERRY_EXT_NAME}
176+
ADDITIONAL_MAKE_CLEAN_FILES ${JERRY_LIB_BUILD_BYPRODUCTS}
156177
)
157178

158179
# define external jerry-core target
@@ -174,13 +195,6 @@ set_property(TARGET jerry-ext PROPERTY
174195
IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/lib/${JERRY_EXT_NAME})
175196

176197
if(NOT "${TARGET_OS}" MATCHES "NUTTX|TIZENRT")
177-
build_lib_name(JERRY_PORT_NAME jerry-port)
178-
build_lib_name(JERRY_PORT_DEFAULT_NAME jerry-port-default)
179-
set_property(DIRECTORY APPEND PROPERTY
180-
ADDITIONAL_MAKE_CLEAN_FILES
181-
${CMAKE_BINARY_DIR}/lib/${JERRY_PORT_NAME}
182-
)
183-
184198
# define external jerry-port-default target
185199
add_library(jerry-port-default STATIC IMPORTED)
186200
add_dependencies(jerry-port-default libjerry)

cmake/libtuv.cmake

+1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ ExternalProject_Add(libtuv
4646
-DBUILDAPIEMULTESTER=NO
4747
-DTARGET_SYSTEMROOT=${TARGET_SYSTEMROOT}
4848
-DTARGET_BOARD=${TARGET_BOARD}
49+
BUILD_BYPRODUCTS ${CMAKE_BINARY_DIR}/lib/${LIBTUV_NAME}
4950
)
5051
add_library(tuv STATIC IMPORTED)
5152
add_dependencies(tuv libtuv)

cmake/mbedtls.cmake

+7-3
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ else()
5050
build_lib_name(MBED_X509_NAME mbedx509)
5151
build_lib_name(MBED_TLS_NAME mbedtls)
5252
build_lib_name(MBED_CRYPTO_NAME mbedcrypto)
53+
set(MBEDTLS_BUILD_BYPRODUCTS
54+
${ARCHIVE_DIR}/${MBED_X509_NAME}
55+
${ARCHIVE_DIR}/${MBED_TLS_NAME}
56+
${ARCHIVE_DIR}/${MBED_CRYPTO_NAME}
57+
)
5358
ExternalProject_Add(mbedtls
5459
PREFIX ${DEPS_MBEDTLS}
5560
SOURCE_DIR ${DEPS_MBEDTLS_SRC}
@@ -68,6 +73,7 @@ else()
6873
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
6974
-DENABLE_PROGRAMS=OFF
7075
-DENABLE_TESTING=OFF
76+
BUILD_BYPRODUCTS ${MBEDTLS_BUILD_BYPRODUCTS}
7177
)
7278

7379
# define external mbedtls target
@@ -90,9 +96,7 @@ else()
9096

9197
set_property(DIRECTORY APPEND PROPERTY
9298
ADDITIONAL_MAKE_CLEAN_FILES
93-
${ARCHIVE_DIR}/${MBED_X509_NAME}
94-
${ARCHIVE_DIR}/${MBED_TLS_NAME}
95-
${ARCHIVE_DIR}/${MBED_CRYPTO_NAME}
99+
${MBEDTLS_BUILD_BYPRODUCTS}
96100
)
97101

98102
set(MBEDTLS_LIBS libmbedtls libmbedx509 libmbedcrypto)

0 commit comments

Comments
 (0)