mirror of
https://github.com/Samsung/escargot.git
synced 2026-06-22 10:01:50 +00:00
* rename ESCARGOT_ENABLE_SHADOWREALM to ESCARGOT_SHADOWREALM in build stuff Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
240 lines
8.8 KiB
CMake
240 lines
8.8 KiB
CMake
CMAKE_MINIMUM_REQUIRED (VERSION 2.8.12 FATAL_ERROR)
|
|
|
|
#######################################################
|
|
# CONFIGURATION
|
|
#######################################################
|
|
SET (ESCARGOT_LIBRARIES)
|
|
SET (ESCARGOT_INCDIRS)
|
|
|
|
# CONFIGURE ESCARGOT VERSION
|
|
FIND_PACKAGE(Git)
|
|
IF (GIT_FOUND)
|
|
EXECUTE_PROCESS (
|
|
COMMAND ${GIT_EXECUTABLE} rev-parse --short=8 HEAD
|
|
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
|
|
OUTPUT_VARIABLE ESCARGOT_BUILD_VERSION
|
|
ERROR_QUIET
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
ENDIF()
|
|
IF ((NOT DEFINED ESCARGOT_BUILD_VERSION) OR (ESCARGOT_BUILD_VERSION STREQUAL ""))
|
|
FILE (STRINGS "${PROJECT_SOURCE_DIR}/RELEASE_VERSION" ESCARGOT_BUILD_VERSION)
|
|
ENDIF()
|
|
MESSAGE(STATUS "Escargot Build Version: ${ESCARGOT_BUILD_VERSION}")
|
|
CONFIGURE_FILE (${PROJECT_SOURCE_DIR}/src/EscargotInfo.h.in ${CMAKE_BINARY_DIR}/escargot_generated/EscargotInfo.h @ONLY)
|
|
SET (ESCARGOT_INCDIRS ${ESCARGOT_INCDIRS} ${CMAKE_BINARY_DIR}/escargot_generated)
|
|
|
|
#######################################################
|
|
# PATH
|
|
#######################################################
|
|
SET (ESCARGOT_ROOT ${PROJECT_SOURCE_DIR})
|
|
SET (ESCARGOT_THIRD_PARTY_ROOT ${ESCARGOT_ROOT}/third_party)
|
|
SET (GCUTIL_ROOT ${ESCARGOT_THIRD_PARTY_ROOT}/GCutil)
|
|
|
|
#######################################################
|
|
# FLAGS FOR TARGET
|
|
#######################################################
|
|
INCLUDE (${ESCARGOT_ROOT}/build/target.cmake)
|
|
|
|
#######################################################
|
|
# FLAGS FOR COMMON
|
|
#######################################################
|
|
# ESCARGOT COMMON CXXFLAGS
|
|
SET (ESCARGOT_DEFINITIONS
|
|
${ESCARGOT_DEFINITIONS}
|
|
-DESCARGOT
|
|
)
|
|
|
|
SET (CXXFLAGS_FROM_ENV $ENV{CXXFLAGS})
|
|
SEPARATE_ARGUMENTS(CXXFLAGS_FROM_ENV)
|
|
SET (CFLAGS_FROM_ENV $ENV{CFLAGS})
|
|
SEPARATE_ARGUMENTS(CFLAGS_FROM_ENV)
|
|
SET (LDFLAGS_FROM_ENV $ENV{LDFLAGS})
|
|
SEPARATE_ARGUMENTS(LDFLAGS_FROM_ENV)
|
|
|
|
# these flags assigned from external should have the highest priority
|
|
SET (CXXFLAGS_FROM_ENV ${CXXFLAGS_FROM_ENV} ${ESCARGOT_CXXFLAGS_FROM_EXTERNAL})
|
|
SET (CFLAGS_FROM_ENV ${CFLAGS_FROM_ENV} ${ESCARGOT_CFLAGS_FROM_EXTERNAL})
|
|
SET (LDFLAGS_FROM_ENV ${LDFLAGS_FROM_ENV} ${ESCARGOT_LDFLAGS_FROM_EXTERNAL})
|
|
|
|
# ESCARGOT COMMON LDFLAGS
|
|
SET (ESCARGOT_LDFLAGS ${ESCARGOT_LDFLAGS} -fvisibility=hidden)
|
|
|
|
# bdwgc
|
|
IF (${ESCARGOT_MODE} STREQUAL "debug")
|
|
SET (ESCARGOT_DEFINITIONS_COMMON ${ESCARGOT_DEFINITIONS_COMMON} -DGC_DEBUG)
|
|
ENDIF()
|
|
|
|
IF (${ESCARGOT_OUTPUT} STREQUAL "shared_lib" AND ${ESCARGOT_HOST} STREQUAL "android")
|
|
SET (ESCARGOT_LDFLAGS ${ESCARGOT_LDFLAGS} -shared)
|
|
ENDIF()
|
|
|
|
IF (ESCARGOT_SMALL_CONFIG)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DESCARGOT_SMALL_CONFIG)
|
|
ENDIF()
|
|
|
|
IF (NOT DEFINED ESCARGOT_LIBICU_SUPPORT)
|
|
SET (ESCARGOT_LIBICU_SUPPORT ON)
|
|
ENDIF()
|
|
|
|
IF (NOT DEFINED ESCARGOT_LIBICU_SUPPORT_WITH_DLOPEN)
|
|
SET (ESCARGOT_LIBICU_SUPPORT_WITH_DLOPEN ON)
|
|
ENDIF()
|
|
|
|
#######################################################
|
|
# FLAGS FOR ADDITIONAL FUNCTION
|
|
#######################################################
|
|
IF (ESCARGOT_LIBICU_SUPPORT)
|
|
IF (ESCARGOT_DEPLOY)
|
|
# Build for deployment (include ICU library)
|
|
SET (CMAKE_INSTALL_RPATH "$ORIGIN")
|
|
SET (CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
|
SET (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
|
ENDIF()
|
|
|
|
IF (ESCARGOT_LIBICU_SUPPORT_WITH_DLOPEN)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DENABLE_ICU -DENABLE_INTL -DENABLE_RUNTIME_ICU_BINDER)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DENABLE_INTL_DISPLAYNAMES -DENABLE_INTL_NUMBERFORMAT -DENABLE_INTL_PLURALRULES)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DENABLE_INTL_RELATIVETIMEFORMAT -DENABLE_INTL_LISTFORMAT -DENABLE_INTL_DURATIONFORMAT)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DENABLE_INTL_SEGMENTER)
|
|
ELSE()
|
|
IF (NOT ${ESCARGOT_HOST} STREQUAL "windows")
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DENABLE_INTL_DISPLAYNAMES -DENABLE_INTL_NUMBERFORMAT -DENABLE_INTL_PLURALRULES)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DENABLE_INTL_RELATIVETIMEFORMAT -DENABLE_INTL_LISTFORMAT -DENABLE_INTL_DURATIONFORMAT)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DENABLE_INTL_SEGMENTER)
|
|
|
|
PKG_CHECK_MODULES(ICU REQUIRED icu-uc icu-i18n)
|
|
ENDIF()
|
|
|
|
MESSAGE(STATUS "ICU Libraries: ${ICU_LIBRARIES}")
|
|
SET (ESCARGOT_LDFLAGS ${ESCARGOT_LDFLAGS} ${ICU_LDFLAGS})
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DENABLE_ICU -DENABLE_INTL)
|
|
SET (ESCARGOT_INCDIRS ${ESCARGOT_INCDIRS} ${ICU_INCLUDE_DIRS})
|
|
SET (ESCARGOT_LIBRARIES ${ESCARGOT_LIBRARIES} ${ICU_LIBRARIES})
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
IF (ESCARGOT_USE_EXTENDED_API)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DENABLE_EXTENDED_API)
|
|
ENDIF()
|
|
|
|
IF (ESCARGOT_USE_CUSTOM_LOGGING)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DENABLE_CUSTOM_LOGGING)
|
|
ELSEIF (${ESCARGOT_HOST} STREQUAL "tizen" OR ${ESCARGOT_HOST} STREQUAL "tizen_obs")
|
|
PKG_CHECK_MODULES (DLOG REQUIRED dlog)
|
|
SET (ESCARGOT_LIBRARIES ${ESCARGOT_LIBRARIES} ${DLOG_LIBRARIES})
|
|
SET (ESCARGOT_INCDIRS ${ESCARGOT_INCDIRS} ${DLOG_INCLUDE_DIRS})
|
|
SET (ESCARGOT_CXXFLAGS ${ESCARGOT_CXXFLAGS} ${DLOG_CFLAGS_OTHER})
|
|
ENDIF()
|
|
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DENABLE_COMPRESSIBLE_STRING)
|
|
IF (ESCARGOT_SMALL_CONFIG)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DLZ4_MEMORY_USAGE=16 -DLZ4_HEAPMODE=1)
|
|
ENDIF()
|
|
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DENABLE_RELOADABLE_STRING)
|
|
|
|
IF (ESCARGOT_CODE_CACHE)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DENABLE_CODE_CACHE)
|
|
ENDIF()
|
|
|
|
IF (ESCARGOT_WASM)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DENABLE_WASM)
|
|
IF (NOT DEFINED ESCARGOT_THREADING)
|
|
# threading should be enabled for WASM (WASM threading feature)
|
|
SET (ESCARGOT_THREADING ON)
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
IF (ESCARGOT_THREADING)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DENABLE_THREADING -DGC_THREAD_ISOLATE)
|
|
ENDIF()
|
|
|
|
IF (ESCARGOT_EXPORT_ALL)
|
|
SET (ESCARGOT_CXXFLAGS ${ESCARGOT_CXXFLAGS} -fvisibility=default)
|
|
ENDIF()
|
|
|
|
IF (ESCARGOT_TCO)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DENABLE_TCO)
|
|
IF (ESCARGOT_TCO_DEBUG)
|
|
IF (NOT ${ESCARGOT_MODE} STREQUAL "debug")
|
|
MESSAGE (FATAL_ERROR "ESCARGOT_TCO_DEBUG is enabled only for debug mode")
|
|
ENDIF()
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DENABLE_TCO_DEBUG)
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
IF (ESCARGOT_TEMPORAL)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DENABLE_TEMPORAL)
|
|
IF (NOT ESCARGOT_LIBICU_SUPPORT)
|
|
MESSAGE (FATAL_ERROR "Temporal feature needs ICU")
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
IF (ESCARGOT_SHADOWREALM)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DENABLE_SHADOWREALM)
|
|
ENDIF()
|
|
|
|
IF (ESCARGOT_TLS_ACCESS_BY_ADDRESS)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DENABLE_TLS_ACCESS_BY_ADDRESS)
|
|
ENDIF()
|
|
|
|
IF (ESCARGOT_TLS_ACCESS_BY_PTHREAD_KEY)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DENABLE_TLS_ACCESS_BY_PTHREAD_KEY)
|
|
ENDIF()
|
|
|
|
IF (ESCARGOT_TEST)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DESCARGOT_ENABLE_TEST)
|
|
IF (ESCARGOT_CODE_CACHE)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DCODE_CACHE_MIN_SOURCE_LENGTH=1024)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DCODE_CACHE_MAX_CACHE_COUNT=128)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DCODE_CACHE_SHOULD_LOAD_FUNCTIONS_ON_SCRIPT_LOADING=true)
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
#######################################################
|
|
# FLAGS FOR $(MODE) : debug/release
|
|
#######################################################
|
|
# DEBUG FLAGS
|
|
SET (ESCARGOT_DEFINITIONS_DEBUG -D_GLIBCXX_DEBUG -DGC_DEBUG)
|
|
|
|
# RELEASE FLAGS
|
|
SET (ESCARGOT_DEFINITIONS_RELEASE -DNDEBUG)
|
|
|
|
# SHARED_LIB FLAGS
|
|
SET (ESCARGOT_CXXFLAGS_SHAREDLIB -fPIC)
|
|
SET (ESCARGOT_LDFLAGS_SHAREDLIB -ldl)
|
|
|
|
# STATIC_LIB FLAGS
|
|
SET (ESCARGOT_CXXFLAGS_STATICLIB -fPIC -DESCARGOT_EXPORT=)
|
|
|
|
# SHELL FLAGS
|
|
SET (ESCARGOT_CXXFLAGS_SHELL -DESCARGOT_EXPORT=)
|
|
|
|
#######################################################
|
|
# FLAGS FOR PROFILING
|
|
#######################################################
|
|
SET (PROFILER_FLAGS)
|
|
|
|
IF (ESCARGOT_PROFILE_BDWGC)
|
|
SET (PROFILER_FLAGS ${PROFILER_FLAGS} -DPROFILE_BDWGC)
|
|
ENDIF()
|
|
|
|
IF (ESCARGOT_MEM_STATS)
|
|
SET (PROFILER_FLAGS ${PROFILER_FLAGS} -DESCARGOT_MEM_STATS)
|
|
ENDIF()
|
|
|
|
IF (ESCARGOT_VALGRIND)
|
|
SET (PROFILER_FLAGS ${PROFILER_FLAGS} -DESCARGOT_VALGRIND)
|
|
ENDIF()
|
|
|
|
IF (ESARGOT_GOOGLE_PERF)
|
|
SET (PROFILER_FLAGS ${PROFILER_FLAGS} -DESCARGOT_GOOGLE_PERF)
|
|
SET (ESCARGOT_LDFLAGS ${ESCARGOT_LDFLAGS} -lprofiler -lunwind -llzma)
|
|
ENDIF()
|
|
|
|
#######################################################
|
|
# FLAGS FOR DEBUGGER
|
|
#######################################################
|
|
IF (ESCARGOT_DEBUGGER)
|
|
SET (ESCARGOT_DEFINITIONS ${ESCARGOT_DEFINITIONS} -DESCARGOT_DEBUGGER)
|
|
ENDIF()
|