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 && \ rm -rf build2 && \
mkdir -p build2 && \ mkdir -p build2 && \
cd 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 \ make VERBOSE=1 \
' '
# docker run -it -v ./:/workdir myapp:latest /bin/bash # docker run -it -v ./:/workdir myapp:latest /bin/bash

View File

@@ -75,7 +75,7 @@ if(ENABLE_TESTS)
) )
else() else()
set(DUSK_BINARY_TARGET_NAME "${DUSK_LIBRARY_TARGET_NAME}" CACHE INTERNAL ${DUSK_CACHE_TARGET}) 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() endif()
# Add tools # Add tools
@@ -126,8 +126,7 @@ elseif(DUSK_TARGET_SYSTEM STREQUAL "gamecube" OR DUSK_TARGET_SYSTEM STREQUAL "wi
endif() endif()
set(DEVKITPRO $ENV{DEVKITPRO}) 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 "${DEVKITPRO}" "${DEVKITPPC}")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 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") if(DUSK_TARGET_SYSTEM STREQUAL "gamecube")
set(_PORTLIBS_FLAVOR "gamecube") set(_PORTLIBS_FLAVOR "gamecube")
set(_LIBOGC_LIBDIR "${DEVKITPRO}/libogc/lib/cube") set(_LIBOGC_LIBDIR "${DEVKITPRO}/libogc/lib/cube")
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME} PRIVATE GEKKO HW_DOL GAMECUBE DOLPHIN) target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME} PRIVATE HW_DOL GAMECUBE)
set(_MACHDEP_OPTS -mogc -mcpu=750 -meabi -mhard-float) set(_MACHDEP_OPTS -mogc)
else() else()
set(_PORTLIBS_FLAVOR "wii") set(_PORTLIBS_FLAVOR "wii")
set(_LIBOGC_LIBDIR "${DEVKITPRO}/libogc/lib/wii") set(_LIBOGC_LIBDIR "${DEVKITPRO}/libogc/lib/wii")
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME} PRIVATE GEKKO HW_RVL WII DOLPHIN) target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME} PRIVATE HW_RVL WII)
set(_MACHDEP_OPTS -mrvll -mcpu=750 -meabi -mhard-float) set(_MACHDEP_OPTS -mrvll)
endif() 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) execute_process(
target_link_options(${DUSK_LIBRARY_TARGET_NAME} PRIVATE ${_MACHDEP_OPTS}) 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 target_include_directories(${DUSK_LIBRARY_TARGET_NAME} PRIVATE
"${DEVKITPRO}/libogc/include" "${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}/${_PORTLIBS_FLAVOR}/lib"
"${PORTLIBS_PATH}/ppc/lib" "${PORTLIBS_PATH}/ppc/lib"
) )
set(Lua_FOUND TRUE) set(Lua_FOUND TRUE)
set(libzip_FOUND TRUE) set(libzip_FOUND TRUE)
# Custom flags for cglm # Custom flags for cglm
set(CGLM_SHARED OFF CACHE BOOL "Build cglm shared" FORCE) # set(CGLM_SHARED OFF CACHE BOOL "Build cglm shared" FORCE)
set(CGLM_STATIC ON CACHE BOOL "Build cglm static" FORCE) # set(CGLM_STATIC ON CACHE BOOL "Build cglm static" FORCE)
find_package(cglm REQUIRED) # find_package(cglm REQUIRED)
# Compile lua # Compile lua
include(FetchContent) # include(FetchContent)
FetchContent_Declare( # FetchContent_Declare(
liblua # liblua
URL https://www.lua.org/ftp/lua-5.5.0.tar.gz # URL https://www.lua.org/ftp/lua-5.5.0.tar.gz
) # )
FetchContent_MakeAvailable(liblua) # FetchContent_MakeAvailable(liblua)
set(LUA_SRC_DIR "${liblua_SOURCE_DIR}/src") # set(LUA_SRC_DIR "${liblua_SOURCE_DIR}/src")
set(LUA_C_FILES # set(LUA_C_FILES
lapi.c lauxlib.c lbaselib.c lcode.c lcorolib.c lctype.c ldblib.c ldebug.c # 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 # 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 # 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 # 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}/") # list(TRANSFORM LUA_C_FILES PREPEND "${LUA_SRC_DIR}/")
add_library(liblua STATIC ${LUA_C_FILES}) # add_library(liblua STATIC ${LUA_C_FILES})
target_include_directories(liblua PUBLIC "${LUA_SRC_DIR}") # target_include_directories(liblua PUBLIC "${LUA_SRC_DIR}")
target_compile_definitions(liblua PRIVATE LUA_USE_C89) # target_compile_definitions(liblua PRIVATE LUA_USE_C89)
add_library(lua::lua ALIAS liblua) # add_library(lua::lua ALIAS liblua)
target_link_libraries(${DUSK_LIBRARY_TARGET_NAME} PRIVATE target_link_libraries(${DUSK_LIBRARY_TARGET_NAME} PUBLIC
# cglm # cglm
# liblua # liblua
# zip # zip
# bz2 # bz2
# z # 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 aesnd
opengx opengx
gxflux
fat fat
ogc ogc
m png16
opus z
jpeg
freetype
) )
endif() endif()

View File

@@ -6,4 +6,6 @@
*/ */
// Empty C file for annoying platforms. // 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 # Main Binary Source
target_sources(${DUSK_BINARY_TARGET_NAME} target_sources(${DUSK_BINARY_TARGET_NAME}
PUBLIC PRIVATE
main.cpp main.cpp
sdl_starter.cpp sdl_starter.cpp
sdl_assets_loader.cpp sdl_assets_loader.cpp