summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorOxore <oxore@protonmail.com>2022-08-11 23:16:38 +0300
committerOxore <oxore@protonmail.com>2022-08-25 22:33:54 +0300
commitbfec175173f4e1a350729588526c4ff0be9ac949 (patch)
tree3bd10776c8c370f05bf4a81eb2e8fc07b1288569 /CMakeLists.txt
Initial commit
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt48
1 files changed, 48 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..1c0713b
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,48 @@
+cmake_minimum_required(VERSION 3.16)
+project(emulator)
+
+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(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -pedantic -O1")
+set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fsanitize=address -fno-omit-frame-pointer")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wno-nested-anon-types -O1")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -fno-rtti") # Speed up compilation
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address -fno-omit-frame-pointer")
+set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} -fsanitize=address -fno-omit-frame-pointer")
+
+set(emulator_sources
+ "emulator.c"
+ )
+set(musashi_m68k_sources
+ musashi-m68k/m68kcpu.c
+ musashi-m68k/m68kdasm.c
+ musashi-m68k/softfloat/softfloat.c
+ ${CMAKE_CURRENT_BINARY_DIR}/m68kops.c
+ )
+add_executable(m68kmake musashi-m68k/m68kmake.c)
+target_include_directories(m68kmake PRIVATE musashi-m68k)
+add_custom_command(
+ OUTPUT m68kops.c m68kops.h
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/musashi-m68k
+ COMMAND ${CMAKE_CURRENT_BINARY_DIR}/m68kmake
+ ${CMAKE_CURRENT_BINARY_DIR}
+ DEPENDS
+ musashi-m68k/m68k_in.c
+ ${CMAKE_CURRENT_BINARY_DIR}/m68kmake
+)
+add_library(musashi_m68k OBJECT ${musashi_m68k_sources})
+target_include_directories(musashi_m68k PRIVATE
+ musashi-m68k
+ ${CMAKE_CURRENT_BINARY_DIR}
+ )
+
+add_executable(emulator ${emulator_sources})
+target_link_libraries(emulator musashi_m68k)
+
+include_directories(
+ .
+ )
+