From 274371f4e37e47002cede673c8483e49c8424559 Mon Sep 17 00:00:00 2001 From: Myles Busig Date: Mon, 11 Mar 2024 02:17:58 -0600 Subject: [PATCH] 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 --- CMakeLists.txt | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 407cbf8..c5794ca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,26 +1,35 @@ cmake_minimum_required(VERSION 3.5) -set(TARGET "gba_display_bitmap") - -project(${TARGET} LANGUAGES CXX C ASM) +project(gba_display_bitmap CXX C ASM) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -set(DEVKITPRO "/opt/devkitpro") -set(DEVKITARM "${DEVKITPRO}/devkitARM") +add_executable(${PROJECT_NAME}) -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ggdb -O3 -fno-exceptions") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb -O3 -fno-exceptions") +# Normal source and header files +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") -target_include_directories(${TARGET} PRIVATE "include") -target_include_directories(${TARGET} PRIVATE "graphics/bin") +# Add sources to targe +target_sources(${PROJECT_NAME} PRIVATE "${proj_sources}") +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") -target_link_libraries(${TARGET} tonc mtl etl) +# Find pkg-config packages +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(etl)