all repos — mgba @ 4bc8f2eb1a5c8cf51d540786122150217574e3d8

mGBA Game Boy Advance Emulator

CMakeLists.txt (view raw)

 1cmake_minimum_required(VERSION 2.6)
 2project(GBAc)
 3set(BINARY_NAME gbac CACHE INTERNAL "Name of output binaries")
 4set(CMAKE_C_FLAGS_DEBUG "-g -Wall -Wextra --std=gnu99")
 5set(CMAKE_C_FLAGS_RELEASE "-O3 -Wall -Wextra --std=gnu99")
 6set(USE_DEBUGGER ON CACHE BOOL "Whether or not to enable the ARM debugger")
 7set(BUILD_SDL ON CACHE BOOL "Build SDL frontend")
 8set(BUILD_PERF ON CACHE BOOL "Build performance profiling tool")
 9file(GLOB ARM_SRC ${CMAKE_SOURCE_DIR}/src/arm/*.c)
10file(GLOB GBA_SRC ${CMAKE_SOURCE_DIR}/src/gba/*.c)
11file(GLOB UTIL_SRC ${CMAKE_SOURCE_DIR}/src/util/*.[cS])
12file(GLOB RENDERER_SRC ${CMAKE_SOURCE_DIR}/src/gba/renderers/video-software.c)
13source_group("ARM core" FILES ${ARM_SRC})
14source_group("GBA board" FILES ${GBA_SRC} ${RENDERER_SRC})
15source_group("Utilities" FILES ${UTIL_SRC})
16include_directories(${CMAKE_SOURCE_DIR}/src/arm)
17include_directories(${CMAKE_SOURCE_DIR}/src/gba)
18include_directories(${CMAKE_SOURCE_DIR}/src/debugger)
19include_directories(${CMAKE_SOURCE_DIR}/src/util)
20
21if(WIN32)
22	add_definitions(-D_WIN32_WINNT=0x0600)
23	file(GLOB OS_SRC ${CMAKE_SOURCE_DIR}/src/platform/windows/*.c)
24	source_group("Windows-specific code" FILES ${OS_SRC})
25else()
26	add_definitions(-DUSE_PTHREADS)
27	set(OS_LIBRARY "${OS_LIBRARY};pthread")
28	file(GLOB OS_SRC ${CMAKE_SOURCE_DIR}/src/platform/posix/*.c)
29	source_group("POSIX-specific code" FILES ${OS_SRC})
30endif()
31
32if(USE_DEBUGGER)
33	file(GLOB DEBUGGER_SRC ${CMAKE_SOURCE_DIR}/src/debugger/*.c)
34	source_group("ARM debugger" FILES ${DEBUGGER_SRC})
35	set(DEBUGGER_LIB "edit")
36	add_definitions(-DUSE_DEBUGGER)
37else()
38	set(DEBUGGER_SRC "")
39	set(DEBUGGER_LIB "")
40endif()
41
42add_library(${BINARY_NAME} SHARED ${ARM_SRC} ${GBA_SRC} ${DEBUGGER_SRC} ${RENDERER_SRC} ${UTIL_SRC} ${OS_SRC})
43target_link_libraries(${BINARY_NAME} m ${DEBUGGER_LIB} ${OS_LIB})
44
45if(BUILD_SDL)
46	add_subdirectory(${CMAKE_SOURCE_DIR}/src/platform/sdl ${CMAKE_BINARY_DIR}/sdl)
47endif()
48
49if(BUILD_PERF)
50	set(PERF_SRC ${CMAKE_SOURCE_DIR}/src/platform/perf-main.c)
51	if(UNIX AND NOT APPLE)
52		set(PERF_LIB "$PERF_LIB};rt")
53	endif()
54
55	add_executable(${BINARY_NAME}-perf ${PERF_SRC})
56	target_link_libraries(${BINARY_NAME}-perf ${BINARY_NAME} ${PERF_LIBRARY})
57endif()