/ CMakeLists.txt
CMakeLists.txt
1 cmake_minimum_required(VERSION 3.4.0) 2 3 cmake_policy(SET CMP0042 OLD) # Fix MACOSX_RPATH. 4 cmake_policy(SET CMP0048 NEW) # Allow VERSION argument in project(). 5 if (POLICY CMP0054) 6 cmake_policy(SET CMP0054 NEW) # No longer implicitly dereference variables. 7 endif() 8 9 set(CMAKE_CONFIGURATION_TYPES Debug Release RelWithDebInfo) 10 11 project(EVMJIT VERSION 0.9.0.2 LANGUAGES CXX C) 12 13 list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") 14 15 message(STATUS "EVM JIT ${EVMJIT_VERSION_MAJOR}.${EVMJIT_VERSION_MINOR}.${EVMJIT_VERSION_PATCH}") 16 17 if (NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64|AMD64") 18 message(FATAL_ERROR "Target ${CMAKE_SYSTEM_PROCESSOR} not supported -- EVM JIT works only on x86_64 architecture") 19 endif() 20 21 option(EVMJIT_EXAMPLES "Generate build targets for the EVMJIT examples" OFF) 22 option(EVMJIT_TESTS "Create targets for CTest" OFF) 23 24 set_property(GLOBAL PROPERTY USE_FOLDERS ON) 25 26 if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") 27 # Always use Release variant of C++ runtime. 28 # We don't want to provide Debug variants of all dependencies. Some default 29 # flags set by CMake must be tweaked. 30 string(REPLACE "/MDd" "/MD" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}) 31 string(REPLACE "/D_DEBUG" "" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}) 32 string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}) 33 set_property(GLOBAL PROPERTY DEBUG_CONFIGURATIONS OFF) 34 else() 35 set(CMAKE_CXX_FLAGS "-std=c++11 -Wall -Wextra -Wconversion -Wno-sign-conversion -Wno-unknown-pragmas ${CMAKE_CXX_FLAGS}") 36 endif() 37 38 if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND NOT SANITIZE) 39 # Do not allow unresolved symbols in shared library (default on linux) 40 # unless sanitizer is used (sanity checks produce unresolved function calls) 41 set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined") 42 endif() 43 44 include(ProjectLLVM) 45 configure_llvm_project() 46 47 add_subdirectory(evmc) 48 49 add_subdirectory(libevmjit) 50 51 if (EVMJIT_TESTS) 52 enable_testing() 53 add_subdirectory(tests) 54 endif()