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:
Robert Sipka
2016-07-27 09:48:10 +02:00
parent 778f3c001e
commit ddab1d8152
48 changed files with 1107 additions and 1927 deletions
+9 -34
View File
@@ -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})