Files
ComSquare/CMakeLists.txt
Clément Le Bihan 2913e9eb2c CMakeLists.txt fix
2021-07-13 22:02:17 +02:00

201 lines
6.1 KiB
CMake

cmake_minimum_required(VERSION 3.12)
set(CMAKE_CXX_STANDARD 20)
project(ComSquare)
if (CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS_DEBUG "-Wall -Wextra -Wshadow -Wno-unused-parameter -W -g")
endif ()
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
include_directories(sources)
set(SOURCES
sources/SNES.cpp
sources/SNES.hpp
sources/Memory/MemoryBus.cpp
sources/Memory/MemoryBus.hpp
sources/Memory/AMemory.hpp
sources/Memory/AMemory.cpp
sources/PPU/PPU.cpp
sources/PPU/PPU.hpp
sources/CPU/CPU.cpp
sources/CPU/CPU.hpp
sources/Cartridge/Cartridge.cpp
sources/Cartridge/Cartridge.hpp
sources/Exceptions/NotImplementedException.hpp
sources/APU/APU.hpp
sources/APU/APU.cpp
sources/Exceptions/InvalidAddress.hpp
sources/Exceptions/InvalidRom.hpp
sources/Models/Ints.hpp
sources/Models/Ints.hpp
sources/Ram/Ram.cpp
sources/Ram/Ram.hpp
sources/Memory/MemoryShadow.cpp
sources/Memory/MemoryShadow.hpp
sources/Memory/ARectangleMemory.cpp
sources/Memory/ARectangleMemory.hpp
sources/APU/DSP/DSP.cpp
sources/APU/DSP/DSP.hpp
sources/Renderer/IRenderer.hpp
sources/Renderer/NoRenderer.cpp
sources/Renderer/NoRenderer.hpp
sources/Exceptions/InvalidAction.hpp
sources/Cartridge/InterruptVectors.hpp
sources/Memory/RectangleShadow.cpp
sources/Memory/RectangleShadow.hpp
sources/Exceptions/InvalidOpcode.hpp
sources/CPU/Instructions/Interrupts.cpp
sources/CPU/Instructions/MathematicalOperations.cpp
sources/APU/Instructions/Standbys.cpp
sources/APU/Instructions/ProgramStatusWord.cpp
sources/APU/Instructions/Bit.cpp
sources/CPU/Instructions/MathematicalOperations.cpp
sources/CPU/Instructions/MemoryInstructions.cpp
sources/CPU/Instructions/InternalInstruction.cpp
sources/Utility/Utility.hpp
sources/Utility/Utility.cpp
sources/CPU/Instructions/BitsInstructions.cpp
sources/APU/Instructions/Stack.cpp
sources/APU/Instructions/Subroutine.cpp
sources/APU/Instructions/ProgramFlow.cpp
sources/APU/Operand.cpp
sources/APU/Instructions/DecimalCompensation.cpp
sources/APU/Instructions/MultiplicationDivision.cpp
sources/APU/Instructions/16bitArithmetic.cpp
sources/APU/Instructions/16bitDataTransmission.cpp
sources/APU/Instructions/8bitShiftRotation.cpp
sources/APU/Instructions/8bitIncrementDecrement.cpp
sources/APU/Instructions/8bitLogical.cpp
sources/APU/Instructions/8bitArithmetic.cpp
sources/APU/Instructions/8bitDataTransmission.cpp
sources/APU/IPL/IPL.hpp
sources/APU/IPL/IPL.cpp
sources/CPU/Instructions/TransferRegisters.cpp
sources/CPU/AddressingModes.cpp
sources/Models/Components.hpp
sources/CPU/Instruction.hpp
sources/Exceptions/DebuggableError.hpp
sources/Models/Components.hpp
sources/Models/Vector2.hpp
sources/PPU/Background.cpp
sources/PPU/Background.hpp
sources/CPU/DMA/DMA.cpp
sources/CPU/DMA/DMA.hpp
sources/Memory/IMemory.hpp
sources/APU/DSP/Voice.cpp
sources/APU/DSP/Echo.cpp
sources/APU/DSP/Gauss.cpp
sources/APU/DSP/Envelope.cpp
sources/APU/DSP/Timer.cpp
sources/APU/DSP/BRR.cpp
sources/PPU/PPUUtils.cpp
sources/PPU/Tile.hpp
sources/PPU/TileRenderer.cpp
sources/PPU/TileRenderer.hpp
sources/PPU/Tile.hpp
sources/CPU/Registers.hpp
sources/Memory/IMemoryBus.hpp
sources/Models/Callback.hpp
sources/Models/Logger.hpp
sources/PPU/PpuDebug.cpp
sources/PPU/PpuDebug.hpp
sources/PPU/PPURegisters.hpp
)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOUIC_SEARCH_PATHS ./)
add_executable(comsquare
sources/main.cpp
${SOURCES}
sources/Renderer/SFRenderer.hpp
sources/Renderer/SFRenderer.cpp
sources/Renderer/QtRenderer/QtSFML.cpp
sources/Renderer/QtRenderer/QtSFML.hpp
sources/Renderer/QtRenderer/QtWidgetSFML.cpp
sources/Renderer/QtRenderer/QtWidgetSFML.hpp
sources/Renderer/QtRenderer/QtSfmlTileRenderer.cpp
sources/Renderer/QtRenderer/QtSfmlTileRenderer.hpp
sources/Renderer/QtRenderer/QtSfmlTileRenderer.cpp
sources/Renderer/QtRenderer/QtSfmlTileRenderer.hpp
sources/Debugger/ClosableWindow.hpp
sources/Debugger/CPU/CPUDebug.cpp
sources/Debugger/CPU/CPUDebug.hpp
sources/Debugger/CPU/Disassembly.cpp
sources/Debugger/CPU/SymbolLoaders/WlaDx.cpp
sources/Debugger/CPU/SymbolLoaders/WlaDx.hpp
sources/Debugger/MemoryViewer.cpp
sources/Debugger/MemoryViewer.hpp
sources/Debugger/HeaderViewer.cpp
sources/Debugger/HeaderViewer.hpp
sources/Debugger/APUDebug.hpp
sources/Debugger/APUDebug.cpp
sources/Debugger/MemoryBusDebug.cpp
sources/Debugger/MemoryBusDebug.hpp
sources/Debugger/CGramDebug.cpp
sources/Debugger/CGramDebug.hpp
sources/Debugger/RegisterViewer.cpp
sources/Debugger/RegisterViewer.hpp
sources/Debugger/TileViewer/TileViewer.cpp
sources/Debugger/TileViewer/TileViewer.hpp
sources/Debugger/TileViewer/RAMTileRenderer.cpp
sources/Debugger/TileViewer/RAMTileRenderer.hpp
ui/tileView.ui
ui/registersView.ui
ui/cpuView.ui
ui/ramView.ui
ui/cartridgeView.ui
ui/apuView.ui
ui/busView.ui
resources/appResources.qrc
)
target_include_directories(comsquare PUBLIC ${PROJECT_BINARY_DIR})
target_compile_definitions(comsquare PUBLIC DEBUGGER_ENABLED)
find_package(Qt5 COMPONENTS Widgets REQUIRED)
target_link_libraries(comsquare
sfml-graphics
sfml-window
sfml-system
sfml-audio
sfml-network
Qt5::Widgets
)
add_executable(unit_tests EXCLUDE_FROM_ALL
${SOURCES}
tests/tests.hpp
tests/CPU/testInterupts.cpp
tests/APU/testAPUInstructions.cpp
tests/APU/testAPU.cpp
tests/PPU/testPpuWrite.cpp
tests/PPU/testPpuWriteFromVmain.cpp
tests/CPU/Math/testADC.cpp
tests/CPU/testStore.cpp
tests/CPU/testInternal.cpp
tests/CPU/testBits.cpp
tests/APU/testOperand.cpp
tests/CPU/Math/testSBC.cpp
tests/CPU/testTransfers.cpp
tests/CPU/Math/testOthersMath.cpp
tests/testRectangleMemory.cpp
tests/CPU/Math/testCMP.cpp
tests/CPU/testDMA.cpp
tests/CPU/testAddressingMode.cpp
tests/testMemoryBus.cpp
tests/PPU/testTileRenderer.cpp
)
target_include_directories(unit_tests PUBLIC tests)
target_compile_definitions(unit_tests PUBLIC TESTS)
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/libs)
find_package(Catch2 REQUIRED)
target_link_libraries(unit_tests PRIVATE Catch2::Catch2WithMain)
if (CMAKE_COMPILER_IS_GNUCXX)
target_link_libraries(unit_tests PRIVATE -lgcov)
target_compile_options(unit_tests PUBLIC -fprofile-arcs -ftest-coverage)
endif ()