diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..180bb87 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.16) +project(mos6502 C) + +set(CMAKE_C_STANDARD 17) +set(CMAKE_C_STANDARD_REQUIRED ON) + +# Output binaries in /build/bin +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) + +# Add warnings and sanitizer options +include(cmake/compiler_warnings.cmake) + +add_subdirectory(src) +add_subdirectory(tests) diff --git a/cmake/compiler_warnings.cmake b/cmake/compiler_warnings.cmake new file mode 100644 index 0000000..3d9ba7c --- /dev/null +++ b/cmake/compiler_warnings.cmake @@ -0,0 +1,6 @@ +# Custom warnings setup +if (MSVC) + add_compile_options(/W4 /permissive-) +else() + add_compile_options(-Wall -Wextra -Wpedantic -Wshadow -Wconversion -Wsign-conversion) +endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..1409df8 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,12 @@ +add_library(mos6502 + cpu.c + memory.c + emulator.c +) + +target_include_directories(mos6502 PUBLIC + ${CMAKE_SOURCE_DIR}/include +) + +add_executable(mos6502_emulator main.c) +target_link_libraries(mos6502_emulator PRIVATE mos6502) diff --git a/main.c b/src/cpu.c similarity index 100% rename from main.c rename to src/cpu.c diff --git a/src/emulator.c b/src/emulator.c new file mode 100644 index 0000000..e69de29 diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..e69de29 diff --git a/src/main.h b/src/main.h new file mode 100644 index 0000000..e69de29 diff --git a/src/memory.c b/src/memory.c new file mode 100644 index 0000000..e69de29