Re-thinking the build system to bring it more into line with the conventions.
We removed that implementation where the build directory isn't set up to build with exactly one configuration of the project but potentially several variants: the same build directory can/must be used for debug and release builds, for full or compact profile versions, etc. So we reworked the CMakeLists, and now one build dir deal with exactly one configuration of the project's libraries and tools. JerryScript-DCO-1.0-Signed-off-by: Zsolt Borbély zsborbely.u-szeged@partner.samsung.com JerryScript-DCO-1.0-Signed-off-by: Robert Sipka rsipka.uszeged@partner.samsung.com
This commit is contained in:
@@ -14,51 +14,26 @@
|
||||
# limitations under the License.
|
||||
|
||||
cmake_minimum_required (VERSION 2.8.12)
|
||||
project (Jerry_LibM C)
|
||||
set(JERRY_LIBM_NAME jerry-libm)
|
||||
project (${JERRY_LIBM_NAME} C)
|
||||
|
||||
# Compiler / linker flags
|
||||
# TODO: Reduce the below list of warning/error disablings as much as possible
|
||||
set(COMPILE_FLAGS_LIBM "${COMPILE_FLAGS_JERRY} ${C_FLAGS_JERRY}")
|
||||
set(COMPILE_FLAGS_LIBM "${COMPILE_FLAGS_LIBM} -Wno-error=sign-compare")
|
||||
set(COMPILE_FLAGS_LIBM "${COMPILE_FLAGS_LIBM} -Wno-error=sign-conversion")
|
||||
set(COMPILE_FLAGS_LIBM "${COMPILE_FLAGS_LIBM} -Wno-sign-conversion")
|
||||
set(COMPILE_FLAGS_LIBM "${COMPILE_FLAGS_LIBM} -Wno-sign-compare")
|
||||
set(COMPILE_FLAGS_LIBM "${COMPILE_FLAGS_LIBM} -Wno-strict-aliasing")
|
||||
|
||||
# Include directories
|
||||
set(INCLUDE_LIBM ${CMAKE_SOURCE_DIR}/jerry-libm/include)
|
||||
set(INCLUDE_LIBM ${INCLUDE_LIBM} PARENT_SCOPE)
|
||||
set(INCLUDE_LIBM "${CMAKE_CURRENT_SOURCE_DIR}/include")
|
||||
|
||||
# Source directories
|
||||
file(GLOB SOURCE_LIBM *.c)
|
||||
|
||||
add_custom_target (jerry-libm-all)
|
||||
add_library(${JERRY_LIBM_NAME} STATIC ${SOURCE_LIBM})
|
||||
set_property(TARGET ${JERRY_LIBM_NAME}
|
||||
PROPERTY COMPILE_FLAGS "${COMPILE_FLAGS_LIBM}")
|
||||
|
||||
# Targets declaration
|
||||
function(declare_targets_for_build_mode BUILD_MODE)
|
||||
set(TARGET_NAME ${BUILD_MODE_PREFIX_${BUILD_MODE}})
|
||||
|
||||
function(declare_target_with_modifiers ) # modifiers are passed in ARGN implicit argument
|
||||
foreach(MODIFIER ${ARGN})
|
||||
set(TARGET_NAME ${TARGET_NAME}${MODIFIER_SUFFIX_${MODIFIER}})
|
||||
endforeach()
|
||||
|
||||
add_library(${TARGET_NAME}.jerry-libm.lib STATIC ${SOURCE_LIBM})
|
||||
set_property(TARGET ${TARGET_NAME}.jerry-libm.lib
|
||||
PROPERTY COMPILE_FLAGS "${COMPILE_FLAGS_LIBM}")
|
||||
target_include_directories(${TARGET_NAME}.jerry-libm.lib PRIVATE ${INCLUDE_LIBM})
|
||||
|
||||
if("${BUILD_MODE}" STREQUAL "UNITTESTS")
|
||||
target_include_directories(${TARGET_NAME}.jerry-libm.lib INTERFACE ${INCLUDE_LIBM})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
foreach(MODIFIERS_LIST ${MODIFIERS_LISTS})
|
||||
separate_arguments(MODIFIERS_LIST)
|
||||
|
||||
declare_target_with_modifiers(${MODIFIERS_LIST})
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
declare_targets_for_build_mode(DEBUG)
|
||||
declare_targets_for_build_mode(RELEASE)
|
||||
declare_targets_for_build_mode(UNITTESTS)
|
||||
target_include_directories(${JERRY_LIBM_NAME} PRIVATE ${INCLUDE_LIBM})
|
||||
target_include_directories(${JERRY_LIBM_NAME} INTERFACE ${INCLUDE_LIBM})
|
||||
|
||||
Reference in New Issue
Block a user