Switch to ogc2
This commit is contained in:
+30
-11
@@ -12,27 +12,46 @@ target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME} PUBLIC
|
|||||||
DUSK_DOLPHIN_BUILD_TYPE="${DUSK_DOLPHIN_BUILD_TYPE}"
|
DUSK_DOLPHIN_BUILD_TYPE="${DUSK_DOLPHIN_BUILD_TYPE}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# Custom compiler flags
|
# Custom compiler flags
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -fno-exceptions")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -fno-exceptions")
|
||||||
|
|
||||||
# Need PkgConfig
|
|
||||||
find_package(PkgConfig REQUIRED)
|
|
||||||
pkg_check_modules(zip IMPORTED_TARGET libzip)
|
|
||||||
|
|
||||||
# Disable all warnings
|
# Disable all warnings
|
||||||
target_compile_options(${DUSK_LIBRARY_TARGET_NAME} PRIVATE -w)
|
target_compile_options(${DUSK_LIBRARY_TARGET_NAME} PRIVATE -w)
|
||||||
|
|
||||||
# Custom flags for cglm
|
# cglm: fetched at source level via Findcglm.cmake (FetchContent, headers only)
|
||||||
set(CGLM_SHARED OFF CACHE BOOL "Build cglm shared" FORCE)
|
|
||||||
set(CGLM_STATIC ON CACHE BOOL "Build cglm static" FORCE)
|
|
||||||
find_package(cglm REQUIRED)
|
find_package(cglm REQUIRED)
|
||||||
|
|
||||||
# Link libraries
|
# Pre-create ZLIB::ZLIB so any downstream cmake module that resolves it
|
||||||
|
# (FindZLIB, pkg-config IMPORTED_TARGET Requires processing) gets plain -lz
|
||||||
|
# rather than an unresolvable IMPORTED target that the PPC linker rejects.
|
||||||
|
if(NOT TARGET ZLIB::ZLIB)
|
||||||
|
add_library(ZLIB::ZLIB INTERFACE IMPORTED GLOBAL)
|
||||||
|
set_target_properties(ZLIB::ZLIB PROPERTIES INTERFACE_LINK_LIBRARIES "z")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Mark libzip as found so src/dusk/CMakeLists.txt skips Findlibzip.cmake.
|
||||||
|
# Findlibzip.cmake calls find_package(ZLIB) which can recreate a broken
|
||||||
|
# ZLIB::ZLIB IMPORTED target, bypassing the shim above.
|
||||||
|
set(libzip_FOUND TRUE CACHE BOOL "libzip found (devkitpro portlibs)" FORCE)
|
||||||
|
|
||||||
|
# Locate zip.h in the devkitpro sysroot (respects CMAKE_FIND_ROOT_PATH).
|
||||||
|
find_path(_dusk_zip_inc NAMES zip.h)
|
||||||
|
if(_dusk_zip_inc)
|
||||||
|
target_include_directories(${DUSK_LIBRARY_TARGET_NAME} PRIVATE "${_dusk_zip_inc}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Link libraries.
|
||||||
|
# zip/z/lzma use target_link_options (raw flags) to bypass cmake target
|
||||||
|
# resolution — pkg-config-generated targets for these carry ZLIB::ZLIB in
|
||||||
|
# INTERFACE_LINK_LIBRARIES which breaks the PPC link step.
|
||||||
target_link_libraries(${DUSK_LIBRARY_TARGET_NAME} PRIVATE
|
target_link_libraries(${DUSK_LIBRARY_TARGET_NAME} PRIVATE
|
||||||
cglm
|
cglm
|
||||||
m
|
m
|
||||||
PkgConfig::zip
|
zip
|
||||||
|
bz2
|
||||||
|
zstd
|
||||||
|
z
|
||||||
|
lzma
|
||||||
)
|
)
|
||||||
|
|
||||||
if(DUSK_DOLPHIN_BUILD_TYPE STREQUAL "ISO")
|
if(DUSK_DOLPHIN_BUILD_TYPE STREQUAL "ISO")
|
||||||
@@ -48,4 +67,4 @@ add_custom_command(TARGET ${DUSK_BINARY_TARGET_NAME} POST_BUILD
|
|||||||
"$<TARGET_FILE:${DUSK_BINARY_TARGET_NAME}>"
|
"$<TARGET_FILE:${DUSK_BINARY_TARGET_NAME}>"
|
||||||
"${DUSK_BINARY_TARGET_NAME_DOL}"
|
"${DUSK_BINARY_TARGET_NAME_DOL}"
|
||||||
COMMENT "Generating ${DUSK_BINARY_TARGET_NAME_DOL} from ${DUSK_BINARY_TARGET_NAME}"
|
COMMENT "Generating ${DUSK_BINARY_TARGET_NAME_DOL} from ${DUSK_BINARY_TARGET_NAME}"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
FROM devkitpro/devkitppc
|
FROM ghcr.io/extremscorner/libogc2
|
||||||
WORKDIR /workdir
|
WORKDIR /workdir
|
||||||
RUN apt update && \
|
RUN apt update && \
|
||||||
|
dkp-pacman -Syu --noconfirm && \
|
||||||
apt install -y python3 python3-pip python3-polib python3-pil python3-dotenv python3-pyqt5 python3-opengl && \
|
apt install -y python3 python3-pip python3-polib python3-pil python3-dotenv python3-pyqt5 python3-opengl && \
|
||||||
dkp-pacman -S --needed --noconfirm gamecube-sdl2 ppc-liblzma ppc-libzip
|
dkp-pacman -S --needed --noconfirm gamecube-sdl2 ppc-liblzma ppc-libzip libogc2 gamecube-tools ppc-libmad ppc-zlib-ng ppc-liblzma ppc-bzip2 ppc-zstd
|
||||||
VOLUME ["/workdir"]
|
VOLUME ["/workdir"]
|
||||||
@@ -5,6 +5,9 @@ if [ -z "$DEVKITPRO" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p build-gamecube
|
mkdir -p build-gamecube
|
||||||
cmake -S. -Bbuild-gamecube -DDUSK_TARGET_SYSTEM=gamecube -DCMAKE_TOOLCHAIN_FILE="$DEVKITPRO/cmake/GameCube.cmake"
|
cmake -S. -Bbuild-gamecube \
|
||||||
|
-DDUSK_TARGET_SYSTEM=gamecube \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE="$DEVKITPRO/cmake/GameCube.cmake" \
|
||||||
|
-DDKP_OGC_PLATFORM_LIBRARY=libogc2
|
||||||
cd build-gamecube
|
cd build-gamecube
|
||||||
make -j$(nproc) VERBOSE=1
|
make -j$(nproc) VERBOSE=1
|
||||||
@@ -20,7 +20,7 @@ errorret_t assetInitDolphinDVD(void) {
|
|||||||
if(!hdr) errorThrow("Failed to read DVD disc header.");
|
if(!hdr) errorThrow("Failed to read DVD disc header.");
|
||||||
u32 fstOff = assetDolphinDVDReadBigEndian32(hdr + 0x424);
|
u32 fstOff = assetDolphinDVDReadBigEndian32(hdr + 0x424);
|
||||||
u32 fstSize = assetDolphinDVDReadBigEndian32(hdr + 0x428);
|
u32 fstSize = assetDolphinDVDReadBigEndian32(hdr + 0x428);
|
||||||
free(hdr);
|
memoryFree(hdr);
|
||||||
|
|
||||||
// Read the FST
|
// Read the FST
|
||||||
u8 *fst = (u8 *)assetDolphinDVDRead((s64)fstOff, fstSize);
|
u8 *fst = (u8 *)assetDolphinDVDRead((s64)fstOff, fstSize);
|
||||||
@@ -71,8 +71,8 @@ void *assetDolphinDVDRead(const s64 offset, const u32 size) {
|
|||||||
void *buf = memoryAlign(ASSET_DOLPHIN_DVD_ALIGN, padded);
|
void *buf = memoryAlign(ASSET_DOLPHIN_DVD_ALIGN, padded);
|
||||||
if(!buf) return NULL;
|
if(!buf) return NULL;
|
||||||
DCInvalidateRange(buf, padded);
|
DCInvalidateRange(buf, padded);
|
||||||
dvdcmdblk block;
|
static dvdcmdblk block;
|
||||||
if(DVD_ReadPrio(&block, buf, padded, offset, 0) <= 0) {
|
if(DVD_ReadAbs(&block, buf, padded, offset) <= 0) {
|
||||||
memoryFree(buf);
|
memoryFree(buf);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
#include <ogcsys.h>
|
#include <ogcsys.h>
|
||||||
#include <gccore.h>
|
#include <gccore.h>
|
||||||
#include <malloc.h>
|
#include <ogc/timesupp.h>
|
||||||
|
|
||||||
#define consoleInit consoleInitDolhpin
|
#define consoleInit consoleInitDolhpin
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,9 @@
|
|||||||
|
|
||||||
#include "time/timedolphin.h"
|
#include "time/timedolphin.h"
|
||||||
|
|
||||||
|
#define SYS_Time __SYS_GetSystemTime
|
||||||
|
#define PPCTicksToUs ticks_to_microsecs
|
||||||
|
|
||||||
double_t timeGetRealDolphin(void) {
|
double_t timeGetRealDolphin(void) {
|
||||||
// "Returns time in ticks since 2000"
|
// "Returns time in ticks since 2000"
|
||||||
u64 timeInUs = PPCTicksToUs(SYS_Time());
|
u64 timeInUs = PPCTicksToUs(SYS_Time());
|
||||||
|
|||||||
Reference in New Issue
Block a user