# SPDX-License-Identifier: Unlicense cmake_minimum_required(VERSION 3.16) project(m68k-disasm) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED True) set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED True) set(CMAKE_EXPORT_COMPILE_COMMANDS True) set(common_debug_flags -fsanitize=address,undefined -fno-omit-frame-pointer -O1 -g3 # Uncomment to enable profiler # -pg ) set(common_compile_options $<$:${common_debug_flags}> $<$:-Wno-nested-anon-types> # Speed up compilation with -fno-exceptions and -fno-rtti $<$:-fno-exceptions> $<$:-fno-rtti> $<$:-Wold-style-cast> $<$:-Wsuggest-override> $<$:-Wsuggest-final-types> $<$:-Wsuggest-final-methods> $<$:-fstrict-volatile-bitfields> $<$:-fstrict-volatile-bitfields> $<$:-Wlogical-op> $<$:-Wlogical-op> $<$:-ffile-prefix-map=${CMAKE_SOURCE_DIR}/=> $<$:-ffile-prefix-map=${CMAKE_SOURCE_DIR}/=> -Wall -Wextra -pedantic -Wcast-align -Wshadow ) add_library(data_buffer OBJECT src/data_buffer.cpp) target_compile_options(data_buffer PRIVATE ${common_compile_options}) target_compile_definitions(data_buffer PRIVATE $<$:_FORTIFY_SOURCE=2>) target_link_options(data_buffer PRIVATE $<$:${common_debug_flags}>) target_include_directories(data_buffer PRIVATE . lib) add_library(coff_image OBJECT src/coff_image.cpp) target_compile_options(coff_image PRIVATE ${common_compile_options}) target_compile_definitions(coff_image PRIVATE $<$:_FORTIFY_SOURCE=2>) target_link_options(coff_image PRIVATE $<$:${common_debug_flags}>) target_include_directories(coff_image PRIVATE . lib) add_executable(m68k-disasm src/main.cpp src/disasm.cpp src/m68k.cpp src/elf_image.cpp ) target_compile_options(m68k-disasm PRIVATE ${common_compile_options}) target_compile_definitions(m68k-disasm PRIVATE $<$:_FORTIFY_SOURCE=2>) target_link_options(m68k-disasm PRIVATE $<$:${common_debug_flags}>) target_link_libraries(m68k-disasm PRIVATE data_buffer) target_include_directories(m68k-disasm PRIVATE . lib) add_executable(readcoff src/readcoff.cpp ) target_compile_options(readcoff PRIVATE ${common_compile_options}) target_compile_definitions(readcoff PRIVATE $<$:_FORTIFY_SOURCE=2>) target_link_options(readcoff PRIVATE $<$:${common_debug_flags}>) target_link_libraries(readcoff PRIVATE data_buffer coff_image) target_include_directories(readcoff PRIVATE . lib) add_executable(coff2bin src/coff2bin.cpp ) target_compile_options(coff2bin PRIVATE ${common_compile_options}) target_compile_definitions(coff2bin PRIVATE $<$:_FORTIFY_SOURCE=2>) target_link_options(coff2bin PRIVATE $<$:${common_debug_flags}>) target_link_libraries(coff2bin PRIVATE data_buffer coff_image) target_include_directories(coff2bin PRIVATE . lib)