-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
67 lines (57 loc) · 1.95 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
cmake_minimum_required(VERSION 3.10.2)
include(ExternalProject)
set(CMAKE_EXPORT_COMPINLE_COMMANDS ON)
set(CMAKE_EXE_LINKER_FLAGS "-no-pie")
set(CMAKE_BUILD_TYPE debug)
if (MSVC)
# warning level 4
add_compile_options(/W4)
else()
# additional warnings
add_compile_options(-Wall -Wextra -Wpedantic)
endif()
project(GameBoyEmulator VERSION 1.0.0 LANGUAGES C DESCRIPTION "Gameboy Emulator")
if(BUILD_DEBUG)
add_compile_definitions(DEBUG)
endif(BUILD_DEBUG)
if (BUILD_LIB)
ExternalProject_Add(libSDL2
GIT_REPOSITORY [email protected]:libsdl-org/SDL.git
GIT_TAG release-2.30.8
SOURCE_DIR ${CMAKE_SOURCE_DIR}/lib/SDL2
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_SOURCE_DIR}/lib/local)
ExternalProject_Add(libtinycc
GIT_REPOSITORY git://repo.or.cz/tinycc.git
SOURCE_DIR ${CMAKE_SOURCE_DIR}/lib/tinycc
CONFIGURE_COMMAND ${CMAKE_SOURCE_DIR}/lib/tinycc/configure
--prefix="${CMAKE_SOURCE_DIR}/lib/local"
BUILD_COMMAND $(MAKE)
INSTALL_COMMAND $(MAKE) install)
endif()
include_directories(
${CMAKE_SOURCE_DIR}/lib/local/include/SDL2/
${CMAKE_SOURCE_DIR}/lib/local/include/
${CMAKE_SOURCE_DIR}/src/
)
link_directories()
file(GLOB SRC src/*.c src/cpu/*.c)
add_executable(${CMAKE_PROJECT_NAME} ${SRC})
set_property(TARGET ${CMAKE_PROJECT_NAME} PROPERTY C_STANDARD 23)
target_link_libraries(${CMAKE_PROJECT_NAME} SDL2
${CMAKE_SOURCE_DIR}/lib/local/lib/libtcc.a)
add_custom_target(run
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME} data/Zelda.gbc
DEPENDS ${CMAKE_PROJECT_NAME}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
add_custom_target(test
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME} data/cpu_instrs.gb
DEPENDS ${CMAKE_PROJECT_NAME}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
add_executable(RunTime ${PROJECT_SOURCE_DIR}/sample/runtime.c)
target_link_libraries(RunTime
${CMAKE_SOURCE_DIR}/lib/local/lib/libtcc.a)
add_custom_target(run_RunTime
RunTime
DEPENDS RunTime
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})