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:
cctv130
2025-09-06 05:55:23 +08:00
committed by GitHub
parent e272b48e84
commit b6fc70f0f4
25 changed files with 19 additions and 83 deletions
+1 -1
View File
@@ -26,7 +26,7 @@ cmake-build-debug
cmake-build-release
compile_commands.json
.cache
deps/*
third_party/*
build/*
remill-build/*
+7 -5
View File
@@ -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)
-1
View File
@@ -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)
+1
View File
@@ -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)
+1 -8
View File
@@ -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
-2
View File
@@ -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
)
-8
View File
@@ -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
-2
View File
@@ -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
-7
View File
@@ -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
-2
View File
@@ -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
)
+1 -7
View File
@@ -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
-2
View File
@@ -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
)
+1 -8
View File
@@ -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
-2
View File
@@ -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
)
-2
View File
@@ -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
)
-8
View File
@@ -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}
-2
View File
@@ -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
)
-2
View File
@@ -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
View File
@@ -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} \
+1 -3
View File
@@ -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}")
+2 -4
View File
@@ -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}"
)
+1 -2
View File
@@ -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)
+1 -2
View File
@@ -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)
+1 -1
View File
@@ -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