1cmake_minimum_required(VERSION 3.13.4) 2include(CheckIncludeFiles) 3 4set(CMAKE_CXX_EXTENSIONS OFF) 5set(CMAKE_CXX_STANDARD 14) 6 7project(libbolt_rt_project) 8 9check_include_files(elf.h HAVE_ELF_H) 10configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in 11 ${CMAKE_CURRENT_BINARY_DIR}/config.h) 12 13add_library(bolt_rt_instr STATIC 14 instr.cpp 15 ${CMAKE_CURRENT_BINARY_DIR}/config.h 16 ) 17add_library(bolt_rt_hugify STATIC 18 hugify.cpp 19 ${CMAKE_CURRENT_BINARY_DIR}/config.h 20 ) 21 22set(BOLT_RT_FLAGS 23 -ffreestanding 24 -fno-exceptions 25 -fno-rtti 26 -fno-stack-protector 27 -mno-sse) 28 29# Don't let the compiler think it can create calls to standard libs 30target_compile_options(bolt_rt_instr PRIVATE ${BOLT_RT_FLAGS} -fPIE) 31target_include_directories(bolt_rt_instr PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) 32target_compile_options(bolt_rt_hugify PRIVATE ${BOLT_RT_FLAGS}) 33target_include_directories(bolt_rt_hugify PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) 34 35install(TARGETS bolt_rt_instr DESTINATION lib) 36install(TARGETS bolt_rt_hugify DESTINATION lib) 37 38if (CMAKE_CXX_COMPILER_ID MATCHES ".*Clang.*") 39 add_library(bolt_rt_instr_osx STATIC 40 instr.cpp 41 ${CMAKE_CURRENT_BINARY_DIR}/config.h 42 ) 43 target_include_directories(bolt_rt_instr_osx PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) 44 target_compile_options(bolt_rt_instr_osx PRIVATE 45 -target x86_64-apple-darwin19.6.0 46 ${BOLT_RT_FLAGS}) 47 install(TARGETS bolt_rt_instr_osx DESTINATION lib) 48endif() 49