/ 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()