SDL2 example builds.

This commit is contained in:
2026-02-04 11:17:25 -06:00
parent 1c32158142
commit ad13d6c6a1
4 changed files with 69 additions and 43 deletions

View File

@@ -5,7 +5,7 @@ docker run -it -v ./:/workdir myapp:latest /bin/bash -c ' \
rm -rf build2 && \
mkdir -p build2 && \
cd build2 && \
cmake .. -DDUSK_TARGET_SYSTEM=gamecube -DCMAKE_C_COMPILER=$DEVKITPPC/bin/powerpc-eabi-gcc -DBUILD_SHARED_LIBS=OFF && \
cmake .. -DDUSK_TARGET_SYSTEM=gamecube -DCMAKE_C_COMPILER=$DEVKITPPC/bin/powerpc-eabi-gcc -DCMAKE_CXX_COMPILER=$DEVKITPPC/bin/powerpc-eabi-g++ -DBUILD_SHARED_LIBS=OFF && \
make VERBOSE=1 \
'
# docker run -it -v ./:/workdir myapp:latest /bin/bash

View File

@@ -75,7 +75,7 @@ if(ENABLE_TESTS)
)
else()
set(DUSK_BINARY_TARGET_NAME "${DUSK_LIBRARY_TARGET_NAME}" CACHE INTERNAL ${DUSK_CACHE_TARGET})
add_executable(${DUSK_BINARY_TARGET_NAME} src2/main.cpp)
add_executable(${DUSK_BINARY_TARGET_NAME} ${DUSK_SOURCES_DIR}/null.c)
endif()
# Add tools
@@ -126,8 +126,7 @@ elseif(DUSK_TARGET_SYSTEM STREQUAL "gamecube" OR DUSK_TARGET_SYSTEM STREQUAL "wi
endif()
set(DEVKITPRO $ENV{DEVKITPRO})
# set(CMAKE_C_COMPILER "${DEVKITPPC}/bin/powerpc-eabi-gcc")
# string(APPEND CMAKE_C_FLAGS "-g -O2 -mcpu=750 -meabi -mhard-float -Wall -mogc -DGEKKO")
string(APPEND CMAKE_C_FLAGS "-g -O2 -mcpu=750 -meabi -mhard-float -Wall -mogc -DGEKKO")
set(CMAKE_FIND_ROOT_PATH "${DEVKITPRO}" "${DEVKITPPC}")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
@@ -142,17 +141,25 @@ elseif(DUSK_TARGET_SYSTEM STREQUAL "gamecube" OR DUSK_TARGET_SYSTEM STREQUAL "wi
if(DUSK_TARGET_SYSTEM STREQUAL "gamecube")
set(_PORTLIBS_FLAVOR "gamecube")
set(_LIBOGC_LIBDIR "${DEVKITPRO}/libogc/lib/cube")
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME} PRIVATE GEKKO HW_DOL GAMECUBE DOLPHIN)
set(_MACHDEP_OPTS -mogc -mcpu=750 -meabi -mhard-float)
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME} PRIVATE HW_DOL GAMECUBE)
set(_MACHDEP_OPTS -mogc)
else()
set(_PORTLIBS_FLAVOR "wii")
set(_LIBOGC_LIBDIR "${DEVKITPRO}/libogc/lib/wii")
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME} PRIVATE GEKKO HW_RVL WII DOLPHIN)
set(_MACHDEP_OPTS -mrvll -mcpu=750 -meabi -mhard-float)
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME} PRIVATE HW_RVL WII)
set(_MACHDEP_OPTS -mrvll)
endif()
target_compile_options(${DUSK_LIBRARY_TARGET_NAME} PRIVATE ${_MACHDEP_OPTS} -DGEKKO -DDOLPHIN -Wall -O2 -DSDL_MAIN_HANDLED -meabi -mhard-float -g -mcpu=750)
target_link_options(${DUSK_LIBRARY_TARGET_NAME} PRIVATE ${_MACHDEP_OPTS} -DGEKKO -DDOLPHIN -Wall -O2 -DSDL_MAIN_HANDLED -meabi -mhard-float -g -mcpu=750)
target_compile_options(${DUSK_LIBRARY_TARGET_NAME} PRIVATE ${_MACHDEP_OPTS} -Wall -O2)
target_link_options(${DUSK_LIBRARY_TARGET_NAME} PRIVATE ${_MACHDEP_OPTS})
execute_process(
COMMAND /opt/devkitpro/portlibs/${_PORTLIBS_FLAVOR}/bin/powerpc-eabi-pkg-config --libs sdl2 SDL2_ttf SDL2_gfx SDL2_mixer SDL2_image
OUTPUT_VARIABLE PKG_CONFIG_LIBS
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# message(FATAL_ERROR "DISABLED FOR NOW ${PKG_CONFIG_LIBS}")
target_compile_options(${DUSK_LIBRARY_TARGET_NAME} PUBLIC ${PKG_CONFIG_LIBS})
target_link_options(${DUSK_LIBRARY_TARGET_NAME} PUBLIC ${PKG_CONFIG_LIBS})
target_include_directories(${DUSK_LIBRARY_TARGET_NAME} PRIVATE
"${DEVKITPRO}/libogc/include"
@@ -166,56 +173,73 @@ elseif(DUSK_TARGET_SYSTEM STREQUAL "gamecube" OR DUSK_TARGET_SYSTEM STREQUAL "wi
"${PORTLIBS_PATH}/${_PORTLIBS_FLAVOR}/lib"
"${PORTLIBS_PATH}/ppc/lib"
)
set(Lua_FOUND TRUE)
set(libzip_FOUND TRUE)
# Custom flags for cglm
set(CGLM_SHARED OFF CACHE BOOL "Build cglm shared" FORCE)
set(CGLM_STATIC ON CACHE BOOL "Build cglm static" FORCE)
find_package(cglm REQUIRED)
# set(CGLM_SHARED OFF CACHE BOOL "Build cglm shared" FORCE)
# set(CGLM_STATIC ON CACHE BOOL "Build cglm static" FORCE)
# find_package(cglm REQUIRED)
# Compile lua
include(FetchContent)
FetchContent_Declare(
liblua
URL https://www.lua.org/ftp/lua-5.5.0.tar.gz
)
FetchContent_MakeAvailable(liblua)
set(LUA_SRC_DIR "${liblua_SOURCE_DIR}/src")
set(LUA_C_FILES
lapi.c lauxlib.c lbaselib.c lcode.c lcorolib.c lctype.c ldblib.c ldebug.c
ldo.c ldump.c lfunc.c lgc.c linit.c liolib.c llex.c lmathlib.c lmem.c
loadlib.c lobject.c lopcodes.c loslib.c lparser.c lstate.c lstring.c
lstrlib.c ltable.c ltablib.c ltm.c lundump.c lutf8lib.c lvm.c lzio.c
)
list(TRANSFORM LUA_C_FILES PREPEND "${LUA_SRC_DIR}/")
add_library(liblua STATIC ${LUA_C_FILES})
target_include_directories(liblua PUBLIC "${LUA_SRC_DIR}")
target_compile_definitions(liblua PRIVATE LUA_USE_C89)
add_library(lua::lua ALIAS liblua)
# include(FetchContent)
# FetchContent_Declare(
# liblua
# URL https://www.lua.org/ftp/lua-5.5.0.tar.gz
# )
# FetchContent_MakeAvailable(liblua)
# set(LUA_SRC_DIR "${liblua_SOURCE_DIR}/src")
# set(LUA_C_FILES
# lapi.c lauxlib.c lbaselib.c lcode.c lcorolib.c lctype.c ldblib.c ldebug.c
# ldo.c ldump.c lfunc.c lgc.c linit.c liolib.c llex.c lmathlib.c lmem.c
# loadlib.c lobject.c lopcodes.c loslib.c lparser.c lstate.c lstring.c
# lstrlib.c ltable.c ltablib.c ltm.c lundump.c lutf8lib.c lvm.c lzio.c
# )
# list(TRANSFORM LUA_C_FILES PREPEND "${LUA_SRC_DIR}/")
# add_library(liblua STATIC ${LUA_C_FILES})
# target_include_directories(liblua PUBLIC "${LUA_SRC_DIR}")
# target_compile_definitions(liblua PRIVATE LUA_USE_C89)
# add_library(lua::lua ALIAS liblua)
target_link_libraries(${DUSK_LIBRARY_TARGET_NAME} PRIVATE
target_link_libraries(${DUSK_LIBRARY_TARGET_NAME} PUBLIC
# cglm
# liblua
# zip
# bz2
# z
SDL2
SDL2_gfx
pthread
SDL2_ttf
m
harfbuzz
SDL2_gfx
SDL2_mixer
m
stdc++
ogg
vorbisidec
modplug
mpg123
opusfile
opus
FLAC
SDL2_image
SDL2main
SDL2
pthread
aesnd
opengx
gxflux
fat
ogc
m
opus
png16
z
jpeg
freetype
)
endif()

View File

@@ -6,4 +6,6 @@
*/
// Empty C file for annoying platforms.
#include "dusk.h"
void nothing(void) {
}

View File

@@ -15,7 +15,7 @@ target_include_directories(${DUSK_LIBRARY_TARGET_NAME}
# Main Binary Source
target_sources(${DUSK_BINARY_TARGET_NAME}
PUBLIC
PRIVATE
main.cpp
sdl_starter.cpp
sdl_assets_loader.cpp