Change CMakeLists.txt to use globs and pkg-config

NOTE: libtonc does not have a pkg-config file packaged in devkitpro. You
must write one and place it in
$DEVKITPRO/portlibs/gba/lib/pkgconfig/libtonc.pc
This commit is contained in:
Madeline Busig 2024-03-11 02:17:58 -06:00
parent 661fd32ba4
commit 3c23746e4b

View File

@ -1,26 +1,35 @@
cmake_minimum_required(VERSION 3.5) cmake_minimum_required(VERSION 3.5)
set(TARGET "gba_display_bitmap") project(gba_display_bitmap CXX C ASM)
project(${TARGET} LANGUAGES CXX C ASM)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(DEVKITPRO "/opt/devkitpro") add_executable(${PROJECT_NAME})
set(DEVKITARM "${DEVKITPRO}/devkitARM")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ggdb -O3 -fno-exceptions") # Normal source and header files
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb -O3 -fno-exceptions") file(GLOB proj_sources LIST_DIRECTORIES false CONFIGURE_DEPENDS src/*.cpp src/*.c src/*.s)
set(proj_include "include")
add_executable(${TARGET} src/main.cpp src/debug.cpp graphics/bin/boxed_dot.s) # Generated graphics source and header files
file(GLOB proj_gfx_sources LIST_DIRECTORIES false CONFIGURE_DEPENDS graphics/bin/*.s)
set(proj_gfx_include "graphics/bin")
target_include_directories(${TARGET} PRIVATE "${DEVKITPRO}/libtonc/include") # Add sources to targe
target_include_directories(${TARGET} PRIVATE "include") target_sources(${PROJECT_NAME} PRIVATE "${proj_sources}")
target_include_directories(${TARGET} PRIVATE "graphics/bin") target_sources(${PROJECT_NAME} PRIVATE "${proj_gfx_sources}")
target_include_directories(${PROJECT_NAME} PRIVATE "${proj_include}")
target_include_directories(${PROJECT_NAME} PRIVATE "${proj_gfx_include}")
target_link_directories(${TARGET} PRIVATE "${DEVKITPRO}/libtonc/lib") # Find pkg-config packages
target_link_libraries(${TARGET} tonc mtl etl) find_package(PkgConfig REQUIRED)
pkg_check_modules(TONC libtonc)
gba_create_rom(${TARGET}) # Add libtonc directories
target_link_directories(${PROJECT_NAME} PRIVATE ${TONC_LIBRARY_DIRS})
target_include_directories(${PROJECT_NAME} PRIVATE ${TONC_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} tonc mtl etl)
gba_create_rom(${PROJECT_NAME})
add_subdirectory(mtl) add_subdirectory(mtl)
add_subdirectory(etl) add_subdirectory(etl)