#------------------------------------------------------------------- # This file is part of the CMake build system for Scol # # The contents of this file are placed in the public domain. Feel # free to make use of it in any way you like. #------------------------------------------------------------------- ####################################################################### # This file takes care of configuring Scol to build with the settings # given in CMake. It creates the necessary config.h file and will # also prepare package files for pkg-config and CMake. ####################################################################### # static / shared build if (Scol_STATIC) set(Scol_LIB_TYPE STATIC) else() set(Scol_LIB_TYPE SHARED) endif() # Create the pkg-config package files on Unix systems if (UNIX) set(Scol_LIB_SUFFIX "") set(Scol_PLUGIN_PREFIX "") set(Scol_PLUGIN_EXT ".so") string(TOLOWER "${CMAKE_BUILD_TYPE}" Scol_BUILD_TYPE) #if (Scol_BUILD_TYPE STREQUAL "debug") # set(SCOL_LIB_SUFFIX "${Scol_LIB_SUFFIX}_d") #endif () set(Scol_ADDITIONAL_LIBS "") set(Scol_CFLAGS "") set(Scol_PREFIX_PATH ${CMAKE_INSTALL_PREFIX}) configure_file(${Scol_TEMPLATES_DIR}/SCOL.pc.in ${Scol_BINARY_DIR}/pkgconfig/SCOL${Scol_LIB_SUFFIX}.pc @ONLY) install(FILES ${Scol_BINARY_DIR}/pkgconfig/SCOL${Scol_LIB_SUFFIX}.pc DESTINATION lib/pkgconfig) endif () if (MSVC) # Enable intrinsics on MSVC in debug mode # Not actually necessary in release mode since /O2 implies /Oi but can't easily add this per build type? add_definitions(/Oi) endif (MSVC) if (APPLE) set(CMAKE_MACOSX_BUNDLE ON) endif() if (Scol_DEBUG_MEMORY_LEAKS) set(SCOL_DEBUG_MEMORY_LEAKS 1) else () set(SCOL_DEBUG_MEMORY_LEAKS 0) endif () if (ANDROID) string(REPLACE "-g " "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") string(REPLACE "-g " "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") set(CMAKE_C_FLAGS "-fsigned-char ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "-fsigned-char ${CMAKE_CXX_FLAGS}") set(CMAKE_C_FLAGS_DEBUG "-g ${CMAKE_C_FLAGS_DEBUG}") set(CMAKE_CXX_FLAGS_DEBUG "-g ${CMAKE_CXX_FLAGS_DEBUG}") set(CMAKE_C_FLAGS_RELEASE "-fvisibility=hidden -fvisibility-inlines-hidden -fomit-frame-pointer -fstrict-aliasing ${CMAKE_C_FLAGS_RELEASE}") set(CMAKE_CXX_FLAGS_RELEASE "-fvisibility=hidden -fvisibility-inlines-hidden -fomit-frame-pointer -fstrict-aliasing ${CMAKE_CXX_FLAGS_RELEASE}") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-fvisibility=hidden -fvisibility-inlines-hidden -fomit-frame-pointer -fstrict-aliasing ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") set(CMAKE_C_FLAGS_RELEASE "-fvisibility=hidden -fvisibility-inlines-hidden -fomit-frame-pointer -fstrict-aliasing ${CMAKE_C_FLAGS_RELEASE}") set(CMAKE_C_FLAGS_RELWITHDEBINFO "-fvisibility=hidden -fvisibility-inlines-hidden -fomit-frame-pointer -fstrict-aliasing ${CMAKE_C_FLAGS_RELWITHDEBINFO}") set(CMAKE_C_FLAGS_MINSIZEREL "-fvisibility=hidden -fvisibility-inlines-hidden -fomit-frame-pointer -fstrict-aliasing ${CMAKE_C_FLAGS_MINSIZEREL}") set(CMAKE_CXX_FLAGS_MINSIZEREL "-fvisibility=hidden -fvisibility-inlines-hidden -fomit-frame-pointer -fstrict-aliasing ${CMAKE_CXX_FLAGS_MINSIZEREL}") set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "-Wl,--exclude-libs,ALL -s ${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "-Wl,--exclude-libs,ALL -s ${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO}") set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "-Wl,--exclude-libs,ALL -s ${CMAKE_MODULE_LINKER_FLAGS_RELEASE}") set(CMAKE_EXE_LINKER_FLAGS_RELEASE "-Wl --exclude-libs,ALL -s ${CMAKE_EXE_LINKER_FLAGS_RELEASE}") if(CMAKE_BUILD_TYPE STREQUAL "Release") add_compile_options(-s) endif() string(APPEND CMAKE_C_FLAGS_RELEASE " -O3") string(APPEND CMAKE_CXX_FLAGS_RELEASE " -O3") endif(ANDROID) # generate scolBuildSettings.h configure_file(${Scol_TEMPLATES_DIR}/scolBuildSettings.h.in ${Scol_BINARY_DIR}/vm/kernel5/include/scolBuildSettings.h @ONLY) if(ANDROID) configure_file(${Scol_TEMPLATES_DIR}/scolBuildSettings.h.in ${CMAKE_SOURCE_DIR}/vm/kernel5/include/scolBuildSettings.h @ONLY) endif() install(FILES ${Scol_BINARY_DIR}/vm/kernel5/include/scolBuildSettings.h DESTINATION include/SCOL)