mirror of
https://github.com/lifting-bits/remill
synced 2026-06-21 13:56:07 +00:00
CMake: update to C++20, clean up properties, optimize fetch content (#721)
- Enable C++20 on both Windows and Linux - Remove unnecessary set_property calls to silence LOCATION warnings - Replace duplicate -fPIC flags with INTERFACE_POSITION_INDEPENDENT_CODE - Set FETCHCONTENT_BASE_DIR to speed up sleigh and ghidra-fork downloads/builds - fixed: Does not match the generator used previously: Unix Makefiles,use ninja instead
This commit is contained in:
+1
-1
@@ -26,7 +26,7 @@ cmake-build-debug
|
||||
cmake-build-release
|
||||
compile_commands.json
|
||||
.cache
|
||||
|
||||
deps/*
|
||||
third_party/*
|
||||
build/*
|
||||
remill-build/*
|
||||
|
||||
+7
-5
@@ -82,7 +82,9 @@ set(REMILL_BUILD_SEMANTICS_DIR_SPARC64 "${CMAKE_CURRENT_BINARY_DIR}/lib/Arch/SPA
|
||||
set(REMILL_BUILD_SEMANTICS_DIR_PPC64_32ADDR "${CMAKE_CURRENT_BINARY_DIR}/lib/Arch/PPC/Runtime")
|
||||
set(REMILL_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include")
|
||||
set(REMILL_LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib")
|
||||
|
||||
if (PROJECT_IS_TOP_LEVEL)
|
||||
set(FETCHCONTENT_BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/deps" CACHE PATH "Base dir for FetchContent")
|
||||
endif()
|
||||
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BCCompiler.cmake")
|
||||
|
||||
# Intel XED
|
||||
@@ -167,16 +169,16 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Windows" AND MSVC)
|
||||
|
||||
else()
|
||||
# warnings and compiler settings
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
target_compile_options(remill_settings INTERFACE -fPIC)
|
||||
endif()
|
||||
set_target_properties(remill_settings PROPERTIES
|
||||
INTERFACE_POSITION_INDEPENDENT_CODE ON
|
||||
)
|
||||
target_compile_options(remill_settings INTERFACE
|
||||
-Wall -Wextra -Wno-unused-parameter -Wno-c++98-compat
|
||||
-Wno-unreachable-code-return -Wno-nested-anon-types
|
||||
-Wno-extended-offsetof
|
||||
-Wno-variadic-macros -Wno-return-type-c-linkage
|
||||
-Wno-c99-extensions -Wno-ignored-attributes -Wno-unused-local-typedef
|
||||
-Wno-unknown-pragmas -Wno-unknown-warning-option -fPIC
|
||||
-Wno-unknown-pragmas -Wno-unknown-warning-option
|
||||
-fno-omit-frame-pointer -fvisibility-inlines-hidden
|
||||
-fno-asynchronous-unwind-tables
|
||||
)
|
||||
|
||||
@@ -29,7 +29,6 @@ target_link_libraries(
|
||||
)
|
||||
|
||||
set_property(TARGET lift-and-compare PROPERTY ENABLE_EXPORTS ON)
|
||||
set_property(TARGET lift-and-compare PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
enable_testing()
|
||||
|
||||
add_test(NAME "small_diff_test" COMMAND "${Python_EXECUTABLE}" ${REMILL_SOURCE_DIR}/scripts/diff_tester_export_insns/diff_tester_export_insns/ci_runner.py --required_success_rate 1.0 --difftester_bin ${CMAKE_BINARY_DIR}/bin/differential_tester_x86/lift-and-compare --workdir ${CMAKE_BINARY_DIR} ${REMILL_SOURCE_DIR}/bin/differential_tester_x86/data/small_test/ --whitelist_file ${REMILL_SOURCE_DIR}/bin/differential_tester_x86/whitelist.json)
|
||||
|
||||
@@ -216,7 +216,6 @@ function(add_runtime target_name)
|
||||
set(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${absolute_target_path}")
|
||||
|
||||
add_custom_target("${target_name}" ALL DEPENDS "${absolute_target_path}")
|
||||
set_property(TARGET "${target_name}" PROPERTY LOCATION "${absolute_target_path}")
|
||||
|
||||
if(REMILL_ENABLE_INSTALL_TARGET)
|
||||
if(DEFINED install_destination)
|
||||
|
||||
@@ -21,6 +21,7 @@ macro(main)
|
||||
|
||||
# Globally set the required C++ standard
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
|
||||
if(UNIX)
|
||||
|
||||
@@ -28,13 +28,6 @@ set_source_files_properties(BasicBlock.cpp PROPERTIES COMPILE_FLAGS "-O0 -g3")
|
||||
function(add_runtime_helper target_name little_endian)
|
||||
message(" > Generating runtime target: ${target_name}")
|
||||
|
||||
# Visual C++ requires C++14
|
||||
if(WIN32)
|
||||
set(required_cpp_standard "c++14")
|
||||
else()
|
||||
set(required_cpp_standard "c++17")
|
||||
endif()
|
||||
|
||||
# necessary to build code as 32-bit
|
||||
# on aarch64
|
||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*|arm64.*|ARM64.*)" AND "${PLATFORM_NAME}" STREQUAL "linux")
|
||||
@@ -47,7 +40,7 @@ function(add_runtime_helper target_name little_endian)
|
||||
SOURCES ${ARMRUNTIME_SOURCEFILES}
|
||||
ADDRESS_SIZE 32
|
||||
DEFINITIONS "LITTLE_ENDIAN=${little_endian}"
|
||||
BCFLAGS "${arch_flags}" "-std=${required_cpp_standard}"
|
||||
BCFLAGS "${arch_flags}"
|
||||
INCLUDEDIRECTORIES "${REMILL_INCLUDE_DIR}" "${REMILL_SOURCE_DIR}"
|
||||
INSTALLDESTINATION "${REMILL_INSTALL_SEMANTICS_DIR}"
|
||||
ARCH arm
|
||||
|
||||
@@ -33,8 +33,6 @@ add_library(remill_arch_aarch64 STATIC
|
||||
|
||||
add_subdirectory(Runtime)
|
||||
|
||||
set_property(TARGET remill_arch_aarch64 PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
target_link_libraries(remill_arch_aarch64 LINK_PUBLIC
|
||||
remill_settings
|
||||
)
|
||||
|
||||
@@ -28,18 +28,10 @@ set_source_files_properties(BasicBlock.cpp PROPERTIES COMPILE_FLAGS "-O0 -g3")
|
||||
function(add_runtime_helper target_name address_bit_size little_endian)
|
||||
message(" > Generating runtime target: ${target_name}")
|
||||
|
||||
# Visual C++ requires C++14
|
||||
if(WIN32)
|
||||
set(required_cpp_standard "c++14")
|
||||
else()
|
||||
set(required_cpp_standard "c++17")
|
||||
endif()
|
||||
|
||||
add_runtime(${target_name}
|
||||
SOURCES ${AARCH64RUNTIME_SOURCEFILES}
|
||||
ADDRESS_SIZE ${address_bit_size}
|
||||
DEFINITIONS "LITTLE_ENDIAN=${little_endian}"
|
||||
BCFLAGS "-std=${required_cpp_standard}"
|
||||
INCLUDEDIRECTORIES "${REMILL_INCLUDE_DIR}" "${REMILL_SOURCE_DIR}"
|
||||
INSTALLDESTINATION "${REMILL_INSTALL_SEMANTICS_DIR}"
|
||||
ARCH aarch64
|
||||
|
||||
@@ -34,8 +34,6 @@ add_subdirectory(SPARC64)
|
||||
add_subdirectory(Sleigh)
|
||||
add_subdirectory(X86)
|
||||
|
||||
set_property(TARGET remill_arch PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
target_link_libraries(remill_arch LINK_PUBLIC
|
||||
remill_arch_aarch64
|
||||
remill_arch_sleigh
|
||||
|
||||
@@ -23,18 +23,11 @@ set(PPCRUNTIME_SOURCEFILES
|
||||
|
||||
set_source_files_properties(BasicBlock.cpp PROPERTIES COMPILE_FLAGS "-O3 -g0")
|
||||
|
||||
# Visual C++ requires C++14
|
||||
if(WIN32)
|
||||
set(required_cpp_standard "c++14")
|
||||
else()
|
||||
set(required_cpp_standard "c++17")
|
||||
endif()
|
||||
|
||||
add_runtime(ppc
|
||||
SOURCES ${PPCRUNTIME_SOURCEFILES}
|
||||
ADDRESS_SIZE 32
|
||||
DEFINITIONS "LITTLE_ENDIAN=${little_endian}"
|
||||
BCFLAGS "-std=${required_cpp_standard}"
|
||||
INCLUDEDIRECTORIES "${REMILL_INCLUDE_DIR}" "${REMILL_SOURCE_DIR}"
|
||||
INSTALLDESTINATION "${REMILL_INSTALL_SEMANTICS_DIR}"
|
||||
ARCH ppc
|
||||
|
||||
@@ -33,8 +33,6 @@ if(${REMILL_BUILD_SPARC32_RUNTIME})
|
||||
add_subdirectory(Runtime)
|
||||
endif()
|
||||
|
||||
set_property(TARGET remill_arch_sparc32 PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
target_link_libraries(remill_arch_sparc32 LINK_PUBLIC
|
||||
remill_settings
|
||||
)
|
||||
|
||||
@@ -31,12 +31,6 @@ endif(REMILL_BARRIER_AS_NOP)
|
||||
|
||||
function(add_runtime_helper target_name little_endian)
|
||||
message(" > Generating runtime target: ${target_name}")
|
||||
# Visual C++ requires C++14
|
||||
if(WIN32)
|
||||
set(required_cpp_standard "c++14")
|
||||
else()
|
||||
set(required_cpp_standard "c++17")
|
||||
endif()
|
||||
|
||||
# necessary to build code as 32-bit
|
||||
# on aarch64
|
||||
@@ -50,7 +44,7 @@ function(add_runtime_helper target_name little_endian)
|
||||
SOURCES ${SPARC32RUNTIME_SOURCEFILES}
|
||||
ADDRESS_SIZE 32
|
||||
DEFINITIONS "LITTLE_ENDIAN=${little_endian}" "REMILL_DISABLE_INT128=1"
|
||||
BCFLAGS "${arch_flags}" "-std=${required_cpp_standard}" "${EXTRA_BC_FLAGS}"
|
||||
BCFLAGS "${arch_flags}" "${EXTRA_BC_FLAGS}"
|
||||
INCLUDEDIRECTORIES "${REMILL_INCLUDE_DIR}" "${REMILL_SOURCE_DIR}"
|
||||
INSTALLDESTINATION "${REMILL_INSTALL_SEMANTICS_DIR}"
|
||||
ARCH sparc
|
||||
|
||||
@@ -31,8 +31,6 @@ add_library(remill_arch_sparc64 STATIC
|
||||
Extract.cpp
|
||||
)
|
||||
|
||||
set_property(TARGET remill_arch_sparc64 PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
target_link_libraries(remill_arch_sparc64 LINK_PUBLIC
|
||||
remill_settings
|
||||
)
|
||||
|
||||
@@ -32,18 +32,11 @@ endif(REMILL_BARRIER_AS_NOP)
|
||||
function(add_runtime_helper target_name little_endian)
|
||||
message(" > Generating runtime target: ${target_name}")
|
||||
|
||||
# Visual C++ requires C++14
|
||||
if(WIN32)
|
||||
set(required_cpp_standard "c++14")
|
||||
else()
|
||||
set(required_cpp_standard "c++17")
|
||||
endif()
|
||||
|
||||
add_runtime(${target_name}
|
||||
SOURCES ${SPARC64RUNTIME_SOURCEFILES}
|
||||
ADDRESS_SIZE 64
|
||||
DEFINITIONS "LITTLE_ENDIAN=${little_endian}"
|
||||
BCFLAGS "-std=${required_cpp_standard}" "${EXTRA_BC_FLAGS}"
|
||||
BCFLAGS "${EXTRA_BC_FLAGS}"
|
||||
INCLUDEDIRECTORIES "${REMILL_INCLUDE_DIR}" "${REMILL_SOURCE_DIR}"
|
||||
INSTALLDESTINATION "${REMILL_INSTALL_SEMANTICS_DIR}"
|
||||
ARCH sparc64
|
||||
|
||||
@@ -65,8 +65,6 @@ add_library(remill_arch_sleigh STATIC
|
||||
|
||||
add_dependencies(remill_arch_sleigh sleigh_custom_specs)
|
||||
|
||||
set_property(TARGET remill_arch_sleigh PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
target_link_libraries(remill_arch_sleigh LINK_PUBLIC
|
||||
remill_settings
|
||||
)
|
||||
|
||||
@@ -32,8 +32,6 @@ add_library(remill_arch_x86 STATIC
|
||||
|
||||
add_subdirectory(Runtime)
|
||||
|
||||
set_property(TARGET remill_arch_x86 PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
target_link_libraries(remill_arch_x86 LINK_PUBLIC
|
||||
remill_settings
|
||||
)
|
||||
|
||||
@@ -28,13 +28,6 @@ set_source_files_properties(BasicBlock.cpp PROPERTIES COMPILE_FLAGS "-O0 -g3")
|
||||
function(add_runtime_helper target_name address_bit_size enable_avx enable_avx512)
|
||||
message(" > Generating runtime target: ${target_name}")
|
||||
|
||||
# Visual C++ requires C++14
|
||||
if(WIN32)
|
||||
set(required_cpp_standard "c++14")
|
||||
else()
|
||||
set(required_cpp_standard "c++11")
|
||||
endif()
|
||||
|
||||
if (address_bit_size EQUAL 32)
|
||||
set(x86_arch "i386")
|
||||
else()
|
||||
@@ -45,7 +38,6 @@ function(add_runtime_helper target_name address_bit_size enable_avx enable_avx51
|
||||
SOURCES ${X86RUNTIME_SOURCEFILES}
|
||||
ADDRESS_SIZE ${address_bit_size}
|
||||
DEFINITIONS "HAS_FEATURE_AVX=${enable_avx}" "HAS_FEATURE_AVX512=${enable_avx512}"
|
||||
BCFLAGS "-std=${required_cpp_standard}"
|
||||
INCLUDEDIRECTORIES "${REMILL_INCLUDE_DIR}" "${REMILL_SOURCE_DIR}"
|
||||
INSTALLDESTINATION "${REMILL_INSTALL_SEMANTICS_DIR}"
|
||||
ARCH ${x86_arch}
|
||||
|
||||
@@ -37,8 +37,6 @@ add_library(remill_bc STATIC
|
||||
|
||||
target_include_directories(remill_bc AFTER PRIVATE "${REMILL_SOURCE_DIR}")
|
||||
|
||||
set_property(TARGET remill_bc PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
target_link_libraries(remill_bc LINK_PRIVATE
|
||||
remill_settings
|
||||
)
|
||||
|
||||
@@ -21,8 +21,6 @@ add_library(remill_os STATIC
|
||||
OS.cpp
|
||||
)
|
||||
|
||||
set_property(TARGET remill_os PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
target_link_libraries(remill_os LINK_PRIVATE
|
||||
remill_settings
|
||||
)
|
||||
|
||||
+1
-1
@@ -229,7 +229,7 @@ function Configure
|
||||
set -x
|
||||
cmake \
|
||||
-DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
|
||||
-DCMAKE_VERBOSE_MAKEFILE=True \
|
||||
-GNinja \
|
||||
-DCMAKE_TOOLCHAIN_FILE="${DOWNLOAD_DIR}/${LIBRARY_VERSION}/scripts/buildsystems/vcpkg.cmake" \
|
||||
-DVCPKG_TARGET_TRIPLET="${VCPKG_TARGET_TRIPLET}" \
|
||||
${BUILD_FLAGS} \
|
||||
|
||||
@@ -29,6 +29,4 @@ target_link_libraries(
|
||||
glog::glog
|
||||
)
|
||||
|
||||
target_include_directories(test-runner PUBLIC "${TEST_RUNNER_INCLUDE_DIR}")
|
||||
|
||||
set_property(TARGET test-runner PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
target_include_directories(test-runner PUBLIC "${TEST_RUNNER_INCLUDE_DIR}")
|
||||
@@ -25,8 +25,7 @@ add_executable(lift-aarch64-tests
|
||||
)
|
||||
|
||||
set_target_properties(lift-aarch64-tests PROPERTIES
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
COMPILE_FLAGS "-fPIC -pie"
|
||||
COMPILE_FLAGS "-pie"
|
||||
)
|
||||
|
||||
target_compile_options(lift-aarch64-tests
|
||||
@@ -52,8 +51,7 @@ add_executable(run-aarch64-tests
|
||||
)
|
||||
|
||||
set_target_properties(run-aarch64-tests PROPERTIES
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
COMPILE_FLAGS "-fPIC -pie"
|
||||
COMPILE_FLAGS "-pie"
|
||||
OBJECT_DEPENDS "${AARCH64_TEST_FILES}"
|
||||
)
|
||||
|
||||
|
||||
@@ -32,5 +32,4 @@ target_link_libraries(
|
||||
glog::glog
|
||||
)
|
||||
|
||||
set_property(TARGET run-ppc-tests PROPERTY ENABLE_EXPORTS ON)
|
||||
set_property(TARGET run-ppc-tests PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
set_property(TARGET run-ppc-tests PROPERTY ENABLE_EXPORTS ON)
|
||||
@@ -32,5 +32,4 @@ target_link_libraries(
|
||||
glog::glog
|
||||
)
|
||||
|
||||
set_property(TARGET run-thumb-tests PROPERTY ENABLE_EXPORTS ON)
|
||||
set_property(TARGET run-thumb-tests PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
set_property(TARGET run-thumb-tests PROPERTY ENABLE_EXPORTS ON)
|
||||
@@ -13,7 +13,7 @@
|
||||
# limitations under the License.
|
||||
|
||||
project(x86_tests ASM)
|
||||
cmake_minimum_required(VERSION 3.2)
|
||||
cmake_minimum_required(VERSION 3.21)
|
||||
|
||||
function(COMPILE_X86_TESTS name address_size has_avx has_avx512)
|
||||
set(X86_TEST_FLAGS
|
||||
|
||||
Reference in New Issue
Block a user