1
0
mirror of https://github.com/bitdefender/bddisasm.git synced 2024-11-22 07:28:07 +00:00
bddisasm/disasmtool/CMakeLists.txt

94 lines
2.9 KiB
CMake
Raw Normal View History

cmake_minimum_required(VERSION 3.16)
project(disasmtool LANGUAGES C)
# Use Release as the build type if no build type was specified and we're not using a multi-config generator .
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "No build type given. Will use 'Release'")
2021-03-30 09:20:47 +00:00
set(CMAKE_BUILD_TYPE
"Release"
CACHE STRING "Choose the type of build." FORCE)
# Set the possible values of build type for cmake-gui.
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release")
endif ()
if (NOT TARGET bddisasm)
find_package(bddisasm REQUIRED)
endif ()
add_executable(disasmtool disasmtool.c)
target_link_libraries(disasmtool PRIVATE bddisasm::bddisasm bddisasm::bdshemu)
if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
include(CheckIPOSupported)
check_ipo_supported(RESULT USE_IPO)
if (USE_IPO)
2024-09-16 09:50:52 +00:00
set_target_properties(disasmtool PROPERTIES INTERPROCEDURAL_OPTIMIZATION True)
endif ()
endif ()
2022-12-05 09:41:38 +00:00
if (MSVC OR "${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "MSVC")
target_compile_options(disasmtool PRIVATE /W4 /WX)
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
target_compile_options(disasmtool PRIVATE -Wno-format)
endif ()
else ()
2021-03-30 09:20:47 +00:00
target_compile_options(
disasmtool
PRIVATE -Wall
-Wno-unknown-pragmas
-Wextra
-Wshadow
2022-12-05 09:41:38 +00:00
-Wno-format
-Wno-cast-function-type
2021-03-30 09:20:47 +00:00
-Wstrict-overflow=2
-Wstrict-prototypes
-Wwrite-strings
-Wshadow
-Winit-self
-Wno-unused-function
-Wno-multichar
-Wno-incompatible-pointer-types
-Wnull-dereference
-Werror=implicit-function-declaration
-pipe
-fwrapv
-fno-strict-aliasing
-fstack-protector-strong
-fno-omit-frame-pointer
-ffunction-sections
-fdata-sections
-g3
-gdwarf-4
2024-05-07 14:27:44 +00:00
-grecord-gcc-switches)
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
target_compile_options(
disasmtool
PRIVATE -Wno-discarded-qualifiers
-Wduplicated-cond)
endif ()
endif ()
2024-09-16 09:50:52 +00:00
if (BDD_ASAN)
target_compile_options(disasmtool PUBLIC "-fsanitize=address")
target_link_libraries(disasmtool PUBLIC "-fsanitize=address")
endif ()
if (BDD_UBSAN)
target_compile_options(disasmtool PUBLIC
"-fsanitize=undefined"
"-fno-sanitize=alignment")
target_link_libraries(disasmtool PUBLIC
"-fsanitize=undefined"
"-fno-sanitize=alignment")
endif ()
if (BDD_LTO)
include(CheckIPOSupported)
check_ipo_supported(RESULT USE_IPO)
if (USE_IPO)
set_target_properties(disasmtool PROPERTIES INTERPROCEDURAL_OPTIMIZATION True)
endif ()
endif ()