mirror of
https://github.com/Samsung/escargot.git
synced 2026-06-22 10:01:50 +00:00
* fix build script * add wamr submodule * fix wasm related code to match with the new wasm-c-api Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
179 lines
7.3 KiB
CMake
179 lines
7.3 KiB
CMake
CMAKE_MINIMUM_REQUIRED (VERSION 2.8)
|
|
|
|
SET (ESCARGOT_INCDIRS
|
|
${ESCARGOT_INCDIRS}
|
|
${ESCARGOT_ROOT}/src/
|
|
${GCUTIL_ROOT}/
|
|
${GCUTIL_ROOT}/bdwgc/include/
|
|
${ESCARGOT_THIRD_PARTY_ROOT}/checked_arithmetic/
|
|
${ESCARGOT_THIRD_PARTY_ROOT}/double_conversion/
|
|
${ESCARGOT_THIRD_PARTY_ROOT}/lz4/
|
|
${ESCARGOT_THIRD_PARTY_ROOT}/rapidjson/include/
|
|
${ESCARGOT_THIRD_PARTY_ROOT}/yarr/
|
|
${ESCARGOT_THIRD_PARTY_ROOT}/runtime_icu_binder/
|
|
)
|
|
|
|
IF (${ESCARGOT_MODE} STREQUAL "debug")
|
|
SET (ESCARGOT_CXXFLAGS ${ESCARGOT_CXXFLAGS_DEBUG} ${ESCARGOT_CXXFLAGS})
|
|
SET (ESCARGOT_LDFLAGS ${ESCARGOT_LDFLAGS_DEBUG} ${ESCARGOT_LDFLAGS})
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} ${ESCARGOT_DEFINITIONS_DEBUG})
|
|
ELSEIF (${ESCARGOT_MODE} STREQUAL "release")
|
|
SET (ESCARGOT_CXXFLAGS ${ESCARGOT_CXXFLAGS_RELEASE} ${ESCARGOT_CXXFLAGS})
|
|
SET (ESCARGOT_LDFLAGS ${ESCARGOT_LDFLAGS_RELEASE} ${ESCARGOT_LDFLAGS})
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} ${ESCARGOT_DEFINITIONS_RELEASE})
|
|
ENDIF()
|
|
|
|
IF (${ESCARGOT_OUTPUT} STREQUAL "shell")
|
|
SET (ESCARGOT_CXXFLAGS ${ESCARGOT_CXXFLAGS} ${ESCARGOT_CXXFLAGS_SHELL})
|
|
SET (ESCARGOT_LDFLAGS ${ESCARGOT_LDFLAGS} ${ESCARGOT_LDFLAGS_SHELL})
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} ${ESCARGOT_DEFINITIONS_SHELL})
|
|
ELSEIF (${ESCARGOT_OUTPUT} STREQUAL "shell_test")
|
|
SET (ESCARGOT_CXXFLAGS ${ESCARGOT_CXXFLAGS} ${ESCARGOT_CXXFLAGS_SHELL} ${ESCARGOT_DEFINITIONS_TEST})
|
|
SET (ESCARGOT_LDFLAGS ${ESCARGOT_LDFLAGS} ${ESCARGOT_LDFLAGS_SHELL})
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} ${ESCARGOT_DEFINITIONS_SHELL})
|
|
add_definitions(-DESCARGOT_ENABLE_TEMPORAL)
|
|
ELSEIF (${ESCARGOT_OUTPUT} STREQUAL "shared_lib")
|
|
SET (ESCARGOT_CXXFLAGS ${ESCARGOT_CXXFLAGS} ${ESCARGOT_CXXFLAGS_SHAREDLIB})
|
|
SET (ESCARGOT_LDFLAGS ${ESCARGOT_LDFLAGS} ${ESCARGOT_LDFLAGS_SHAREDLIB})
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} ${ESCARGOT_DEFINITIONS_SHAREDLIB})
|
|
ELSEIF (${ESCARGOT_OUTPUT} STREQUAL "static_lib")
|
|
SET (ESCARGOT_CXXFLAGS ${ESCARGOT_CXXFLAGS} ${ESCARGOT_CXXFLAGS_STATICLIB})
|
|
SET (ESCARGOT_LDFLAGS ${ESCARGOT_LDFLAGS} ${ESCARGOT_LDFLAGS_STATICLIB})
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} ${ESCARGOT_DEFINITIONS_STATICLIB})
|
|
ENDIF()
|
|
|
|
IF (${ESCARGOT_ASAN} STREQUAL "1")
|
|
SET (ESCARGOT_CXXFLAGS ${ESCARGOT_CXXFLAGS} -fsanitize=address)
|
|
SET (ESCARGOT_LDFLAGS ${ESCARGOT_LDFLAGS} -lasan)
|
|
ENDIF()
|
|
|
|
|
|
# SOURCE FILES
|
|
FILE (GLOB_RECURSE ESCARGOT_SRC ${ESCARGOT_ROOT}/src/*.cpp)
|
|
FILE (GLOB YARR_SRC ${ESCARGOT_THIRD_PARTY_ROOT}/yarr/*.cpp)
|
|
FILE (GLOB DOUBLE_CONVERSION_SRC ${ESCARGOT_THIRD_PARTY_ROOT}/double_conversion/*.cc)
|
|
FILE (GLOB LZ4_SRC ${ESCARGOT_THIRD_PARTY_ROOT}/lz4/*.cpp)
|
|
|
|
IF (NOT ${ESCARGOT_OUTPUT} MATCHES "shell")
|
|
LIST (REMOVE_ITEM ESCARGOT_SRC ${ESCARGOT_ROOT}/src/shell/Shell.cpp)
|
|
ENDIF()
|
|
|
|
IF (${ESCARGOT_OUTPUT} STREQUAL "cctest")
|
|
ADD_COMPILE_OPTIONS(${ESCARGOT_THIRDPARTY_CFLAGS})
|
|
ADD_SUBDIRECTORY (third_party/googletest/googletest)
|
|
TARGET_INCLUDE_DIRECTORIES (gtest PUBLIC ${ESCARGOT_THIRD_PARTY_ROOT}/googletest/googletest/include)
|
|
FILE (GLOB CCTEST_SRC ${ESCARGOT_ROOT}/test/cctest/testapi.cpp)
|
|
ENDIF()
|
|
|
|
SET (ESCARGOT_SRC_LIST
|
|
${ESCARGOT_SRC}
|
|
${YARR_SRC}
|
|
${DOUBLE_CONVERSION_SRC}
|
|
${LZ4_SRC}
|
|
${CCTEST_SRC}
|
|
)
|
|
|
|
# GCUTIL
|
|
IF (${ESCARGOT_OUTPUT} STREQUAL "shared_lib")
|
|
SET (ESCARGOT_THIRDPARTY_CFLAGS ${ESCARGOT_THIRDPARTY_CFLAGS} ${ESCARGOT_CXXFLAGS_SHAREDLIB})
|
|
ELSEIF (${ESCARGOT_OUTPUT} STREQUAL "static_lib")
|
|
SET (ESCARGOT_THIRDPARTY_CFLAGS ${ESCARGOT_THIRDPARTY_CFLAGS} ${ESCARGOT_CXXFLAGS_STATICLIB})
|
|
ENDIF()
|
|
|
|
SET (GCUTIL_CFLAGS ${ESCARGOT_THIRDPARTY_CFLAGS})
|
|
|
|
IF (ESCARGOT_SMALL_CONFIG)
|
|
SET (GCUTIL_CFLAGS ${GCUTIL_CFLAGS} -DSMALL_CONFIG -DMAX_HEAP_SECTS=512)
|
|
ENDIF()
|
|
IF (ESCARGOT_THREADING)
|
|
SET (GCUTIL_ENABLE_THREADING ON)
|
|
ENDIF()
|
|
|
|
SET (GCUTIL_MODE ${ESCARGOT_MODE})
|
|
|
|
ADD_SUBDIRECTORY (third_party/GCutil)
|
|
|
|
SET (ESCARGOT_LIBRARIES ${ESCARGOT_LIBRARIES} gc-lib)
|
|
|
|
# LIBBF
|
|
ADD_LIBRARY (libbf STATIC
|
|
${ESCARGOT_THIRD_PARTY_ROOT}/libbf/libbf.c
|
|
${ESCARGOT_THIRD_PARTY_ROOT}/libbf/cutils.c)
|
|
TARGET_INCLUDE_DIRECTORIES (libbf PUBLIC ${ESCARGOT_THIRD_PARTY_ROOT}/libbf)
|
|
SET (LIBBF_CFLAGS
|
|
${ESCARGOT_THIRDPARTY_CFLAGS} # we can share flags with gcutil
|
|
${CFLAGS_FROM_ENV}
|
|
-w
|
|
-g3
|
|
-fdata-sections
|
|
-ffunction-sections
|
|
-fno-omit-frame-pointer
|
|
-fvisibility=hidden)
|
|
|
|
IF (${ESCARGOT_MODE} STREQUAL "debug")
|
|
SET (LIBBF_CFLAGS ${ESCARGOT_CXXFLAGS_DEBUG} ${LIBBF_CFLAGS})
|
|
ELSEIF (${ESCARGOT_MODE} STREQUAL "release")
|
|
SET (LIBBF_CFLAGS ${ESCARGOT_CXXFLAGS_RELEASE} ${LIBBF_CFLAGS})
|
|
ENDIF()
|
|
|
|
TARGET_COMPILE_OPTIONS (libbf PRIVATE ${LIBBF_CFLAGS})
|
|
|
|
SET (ESCARGOT_LIBRARIES ${ESCARGOT_LIBRARIES} libbf)
|
|
|
|
# RUNTIME ICU BINDER
|
|
SET (RIB_CFLAGS ${ESCARGOT_CXXFLAGS})
|
|
|
|
IF (${ESCARGOT_OUTPUT} STREQUAL "shared_lib")
|
|
SET (RIB_CFLAGS ${RIB_CFLAGS} ${ESCARGOT_CXXFLAGS_SHAREDLIB})
|
|
ELSEIF (${ESCARGOT_OUTPUT} STREQUAL "static_lib")
|
|
SET (RIB_CFLAGS ${RIB_CFLAGS} ${ESCARGOT_CXXFLAGS_STATICLIB})
|
|
ENDIF()
|
|
|
|
SET (RIB_MODE ${ESCARGOT_MODE})
|
|
|
|
ADD_SUBDIRECTORY (third_party/runtime_icu_binder)
|
|
|
|
SET (ESCARGOT_LIBRARIES ${ESCARGOT_LIBRARIES} runtime-icu-binder-static)
|
|
|
|
# WebAssembly (wamr)
|
|
IF (ESCARGOT_WASM)
|
|
# share flags with gcutil
|
|
SET (WASM_CFLAGS ${ESCARGOT_GCUTIL_CFLAGS})
|
|
|
|
ADD_SUBDIRECTORY (third_party/wasm)
|
|
SET (ESCARGOT_LIBRARIES ${ESCARGOT_LIBRARIES} wasm)
|
|
ENDIF()
|
|
|
|
# BUILD
|
|
IF (${ESCARGOT_OUTPUT} MATCHES "shell")
|
|
ADD_EXECUTABLE (${ESCARGOT_TARGET} ${ESCARGOT_SRC_LIST})
|
|
|
|
TARGET_LINK_LIBRARIES (${ESCARGOT_TARGET} PRIVATE ${ESCARGOT_LIBRARIES} ${ESCARGOT_LDFLAGS} ${LDFLAGS_FROM_ENV})
|
|
TARGET_INCLUDE_DIRECTORIES (${ESCARGOT_TARGET} PRIVATE ${ESCARGOT_INCDIRS})
|
|
TARGET_COMPILE_DEFINITIONS (${ESCARGOT_TARGET} PRIVATE ${ESCARGOT_DEFINITIONS})
|
|
TARGET_COMPILE_OPTIONS (${ESCARGOT_TARGET} PRIVATE ${ESCARGOT_CXXFLAGS} ${CXXFLAGS_FROM_ENV} ${PROFILER_FLAGS})
|
|
|
|
ELSEIF (${ESCARGOT_OUTPUT} STREQUAL "shared_lib")
|
|
ADD_LIBRARY (${ESCARGOT_TARGET} SHARED ${ESCARGOT_SRC_LIST})
|
|
|
|
TARGET_LINK_LIBRARIES (${ESCARGOT_TARGET} PUBLIC ${ESCARGOT_LIBRARIES} ${ESCARGOT_LDFLAGS} ${LDFLAGS_FROM_ENV})
|
|
TARGET_INCLUDE_DIRECTORIES (${ESCARGOT_TARGET} PRIVATE ${ESCARGOT_INCDIRS})
|
|
TARGET_COMPILE_DEFINITIONS (${ESCARGOT_TARGET} PRIVATE ${ESCARGOT_DEFINITIONS})
|
|
TARGET_COMPILE_OPTIONS (${ESCARGOT_TARGET} PRIVATE ${ESCARGOT_CXXFLAGS} ${CXXFLAGS_FROM_ENV})
|
|
|
|
ELSEIF (${ESCARGOT_OUTPUT} STREQUAL "static_lib")
|
|
ADD_LIBRARY (${ESCARGOT_TARGET} STATIC ${ESCARGOT_SRC_LIST})
|
|
|
|
TARGET_LINK_LIBRARIES (${ESCARGOT_TARGET} PUBLIC ${ESCARGOT_LIBRARIES} ${ESCARGOT_LDFLAGS} ${LDFLAGS_FROM_ENV})
|
|
TARGET_INCLUDE_DIRECTORIES (${ESCARGOT_TARGET} PRIVATE ${ESCARGOT_INCDIRS})
|
|
TARGET_COMPILE_DEFINITIONS (${ESCARGOT_TARGET} PRIVATE ${ESCARGOT_DEFINITIONS})
|
|
TARGET_COMPILE_OPTIONS (${ESCARGOT_TARGET} PRIVATE ${ESCARGOT_CXXFLAGS} ${CXXFLAGS_FROM_ENV})
|
|
|
|
ELSEIF (${ESCARGOT_OUTPUT} STREQUAL "cctest")
|
|
ADD_EXECUTABLE (${ESCARGOT_CCTEST_TARGET} ${ESCARGOT_SRC_LIST})
|
|
|
|
TARGET_LINK_LIBRARIES (${ESCARGOT_CCTEST_TARGET} PRIVATE ${ESCARGOT_LIBRARIES} ${ESCARGOT_LDFLAGS} ${LDFLAGS_FROM_ENV} gtest)
|
|
TARGET_INCLUDE_DIRECTORIES (${ESCARGOT_CCTEST_TARGET} PRIVATE ${ESCARGOT_INCDIRS})
|
|
TARGET_COMPILE_DEFINITIONS (${ESCARGOT_CCTEST_TARGET} PRIVATE ${ESCARGOT_DEFINITIONS})
|
|
TARGET_COMPILE_OPTIONS (${ESCARGOT_CCTEST_TARGET} PRIVATE ${ESCARGOT_CXXFLAGS} ${CXXFLAGS_FROM_ENV})
|
|
ENDIF()
|