Linux build fixes

This commit is contained in:
dbalatoni13 2025-04-13 18:32:21 +02:00
parent 236ce75a28
commit 525213367c
19 changed files with 62 additions and 33 deletions

View file

@ -16,24 +16,20 @@ if (NOT CMAKE_BUILD_TYPE)
endif ()
if (CMAKE_SYSTEM_NAME STREQUAL Linux)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unknown-pragmas -Wno-unused-variable -Wno-unused-parameter")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32 -fsanitize=address -fsanitize-address-use-after-scope")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32 -fsanitize=address -fsanitize-address-use-after-scope -Wno-unknown-pragmas -Wno-unused-variable -Wno-unused-parameter")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32 -fsanitize=address -fsanitize-address-use-after-scope -Wno-register")
set(CMAKE_PREFIX_PATH /usr)
set(CMAKE_LIBRARY_ARCHITECTURE i386-linux-gnu)
set(CMAKE_LIBRARY_PATH "/usr/lib32" CACHE PATH "")
set(CMAKE_LIBRARY_PATH "/usr/lib32" "/usr/lib/i386-linux-gnu" CACHE PATH "")
set(CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX 32)
endif ()
if (APPLE)
elseif (APPLE)
add_compile_options(-Wno-declaration-after-statement)
elseif (MSVC)
add_compile_options(/bigobj)
endif ()
add_compile_options(-fsanitize=address)
if (MSVC)
add_compile_options(/bigobj)
endif ()
add_subdirectory(extern/aurora EXCLUDE_FROM_ALL)
add_subdirectory(extern/musyx EXCLUDE_FROM_ALL)
@ -142,10 +138,10 @@ source_group("Port" FILES ${PORT_FILES})
if (NOT MSVC)
foreach (file ${DOLPHIN_FILES})
set_source_files_properties(${file} PROPERTIES COMPILE_FLAGS "-std=c89 -Dinline=")
set_source_files_properties(${file} PROPERTIES COMPILE_FLAGS "-Dinline=")
endforeach ()
foreach (file ${GAME_FILES})
set_source_files_properties(${file} PROPERTIES COMPILE_FLAGS "-std=c89 -Dinline=")
set_source_files_properties(${file} PROPERTIES COMPILE_FLAGS "-Dinline=")
endforeach ()
endif ()
@ -162,7 +158,8 @@ if (MSVC)
endif ()
target_link_options(dol PRIVATE "/DEF:${CMAKE_SOURCE_DIR}/dol.def")
else ()
target_compile_options(dol PRIVATE "-fvisibility=default")
# target_compile_options(dol PRIVATE "-fvisibility=hidden")
# target_link_options(dol PRIVATE "LINKER:--version-script=${CMAKE_CURRENT_SOURCE_DIR}/dol.map")
endif ()
add_executable(marioparty4 src/port/portmain.c)
@ -184,6 +181,11 @@ foreach (dir ${REL_DIRS})
set_target_properties(${dir} PROPERTIES LINK_FLAGS "/EXPORT:ObjectSetup")
else ()
endif ()
if (NOT CMAKE_SYSTEM_NAME STREQUAL Windows)
target_compile_options(${dir} PRIVATE "-fvisibility=hidden")
target_link_options(${dir} PRIVATE "LINKER:--version-script=${CMAKE_CURRENT_SOURCE_DIR}/rel.map")
set_target_properties(${dir} PROPERTIES PREFIX "")
endif ()
target_link_libraries(${dir} PRIVATE dol musyx)
endif ()
endif ()

2
extern/aurora vendored

@ -1 +1 @@
Subproject commit 3b56e337c08a1dd4946c226298011364c319c7a2
Subproject commit a18cdf3b599b482c850096994cef09ba3920851b

2
extern/musyx vendored

@ -1 +1 @@
Subproject commit a579f4d4abbac1c67fddf0d361291320f81a7b6c
Subproject commit 37e8ecd4e6503e90b97ea81cd7d669357861d501

View file

@ -4,7 +4,9 @@
#include "math.h"
#include "dolphin/mtx.h"
#ifndef M_PI
#define M_PI 3.141592653589793
#endif
typedef struct vec2f {
float x;

View file

@ -8,10 +8,6 @@ s16 BoardBooCreate(s32 arg0, Vec *arg1);
void BoardBooKill(void);
s32 BoardBooStealTypeSet(s32 arg0);
s32 BoardBooStealMain(void);
BOOL CheckBallCoinDone(void);
void TakeBallStar(void);
void ExecTakeBallStar(omObjData *arg0);
BOOL CheckTakeBallStarDone(void);
s32 BoardBooStealValueGet(s16 *arg0, s16 *arg1);
BOOL BoardBooStealLightCheck(void);

View file

@ -34,7 +34,6 @@ s32 HuDataReadChk(s32 data_num);
DataReadStat *HuDataGetStatus(void *dir_ptr);
void *HuDataGetDirPtr(s32 data_num);
DataReadStat *HuDataDirRead(s32 data_num);
DataReadStat *HuDataDirReadNum(s32 data_num, s32 num);
DataReadStat *HuDataDirSet(void *dir_ptr, s32 data_num);
void HuDataDirReadAsyncCallBack(s32 result, DVDFileInfo* fileInfo);
s32 HuDataDirReadAsync(s32 data_num);

6
rel.map Normal file
View file

@ -0,0 +1,6 @@
{
global:
ObjectSetup;
local:
*;
};

View file

@ -1367,7 +1367,6 @@ void C_MTXMultVecArray(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count)
void C_MTXROMultVecArray(const ROMtx m, const Vec *srcBase, Vec *dstBase, u32 count)
{
u32 i;
for (u32 i = 0; i < count; ++i) {
Vec* src = &srcBase[i];
Vec* dst = &dstBase[i];

View file

@ -34,7 +34,7 @@ void OSStopStopwatch(struct OSStopwatch *sw)
}
}
long long OSCheckStopwatch(struct OSStopwatch *sw)
OSTime OSCheckStopwatch(OSStopwatch *sw)
{
long long currTotal;

View file

@ -265,7 +265,11 @@ void *HuAR_ARAMtoMRAMNum(u32 src, s32 num) {
block = HuARInfoGet(src);
if (HuDataReadChk(block->dir << 16) >= 0) {
#ifdef NON_MATCHING
return 0;
#else
return;
#endif
}
size = HuARSizeGet(src);
dst = HuMemDirectMallocNum(HEAP_DVD, size, num);

View file

@ -95,6 +95,8 @@ typedef struct {
float unk04;
} BallTakeCoinWork;
static BOOL CheckBallCoinDone(void);
static void TakeBallStar(void);
static void ComSetupStealPlayer(s32 arg0);
static void ComSetStealPlayerInput(s32 arg0, s32 arg1);
static void ExecCoinSteal(void);
@ -131,8 +133,10 @@ static void BallBooAttack(omObjData *arg0, BallBooWork *arg1);
static void BallBooFlash(omObjData *arg0, BallBooWork *arg1);
static void TakeBallCoin(void);
static void ExecTakeBallCoin(omObjData *arg0);
static void ExecTakeBallStar(omObjData *arg0);
static void TakeBallCoinPosSet(BallTakeCoinData *arg0, Vec *arg1);
static void UpdatePlayerCoins(void);
static BOOL CheckTakeBallStarDone(void);
s8 lbl_801D41E2;
static s8 stealTarget;

View file

@ -729,9 +729,11 @@ s32 BoardPlayerSizeGet(s32 idx)
PlayerState *player;
player = BoardPlayerGet(idx);
#ifndef NON_MATCHING
if (!player) {
return;
}
#endif
return player->size;
}
@ -2220,9 +2222,11 @@ s32 BoardPlayerAutoSizeGet(s32 arg0)
PlayerState *player;
player = BoardPlayerGet(arg0);
#ifndef NON_MATCHING
if (!player) {
return;
}
#endif
return player->auto_size;
}

View file

@ -685,13 +685,14 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4,
static s32 PlayCharVoice(s16 character, s16 arg1, u8 arg2)
{
UnkCharInstanceStruct *temp_r31;
ModelData *temp_r29;
temp_r31 = &charInstance[character];
temp_r29 = &Hu3DData[temp_r31->unk00];
UnkCharInstanceStruct *temp_r31 = &charInstance[character];
ModelData *temp_r29 = &Hu3DData[temp_r31->unk00];
if (arg2 & 1) {
#ifdef NON_MATCHING
return 0;
#else
return;
#endif
}
if (temp_r31->unkAC & 8) {
return HuAudCharVoicePlayPos(character, arg1, &temp_r29->pos);
@ -1973,7 +1974,11 @@ static s32 PlayStepFX(s16 character, s16 arg1, u8 arg2)
temp_r31 = &charInstance[character];
var_r28 = &Hu3DData[temp_r31->unk00];
if (arg2 & 1) {
#ifdef NON_MATCHING
return 0;
#else
return;
#endif
}
if (temp_r31->unkB0 == 4) {
arg1 = 0x109;

View file

@ -1828,7 +1828,11 @@ static s32 LoadTexture(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16
if (arg1 == 0) {
OSReport("Error: No Texture\n");
#ifdef NON_MATCHING
return 0;
#else
return;
#endif
}
var_r27 = arg1->sizeX;
var_r26 = arg1->sizeY;

View file

@ -268,7 +268,7 @@ void omDestroyObjMan(void)
OSReport("objman>Destory ObjMan\n");
}
omObjData *omAddObjEx(Process *objman_process, s16 prio, u16 mdlcnt, u16 mtncnt, s16 group, void (*func)(omObjData *))
omObjData *omAddObjEx(Process *objman_process, s16 prio, u16 mdlcnt, u16 mtncnt, s16 group, omObjFunc func)
{
s32 i;
omObjData *object;

View file

@ -1,9 +1,16 @@
#include "game/dvd.h"
#include "game/object.h"
#ifdef TARGET_PC
#ifdef _WIN32
#define OVL_DEFINE(name, path) { path ".dll", 0 },
#else
#define OVL_DEFINE(name, path) { path ".so", 0 },
#endif
#else
#define OVL_DEFINE(name, path) { "dll/" path ".rel", 0 },
#endif

View file

@ -4,6 +4,7 @@
#include <dolphin.h>
#ifndef _WIN32
#include <time.h>
#include <sys/time.h>
#include <unistd.h>
#if __APPLE__
@ -36,7 +37,7 @@ static u64 GetGCTicks()
struct timespec tp;
clock_gettime(CLOCK_MONOTONIC, &tp);
return u64((tp.tv_sec * 1000000000ull) + tp.tv_nsec) * GetGCTicksPerSec() / 1000000000ull;
return ((tp.tv_sec * 1000000000ull) + tp.tv_nsec) * OS_CORE_CLOCK / 1000000000ull;
#elif _WIN32
LARGE_INTEGER perf;
QueryPerformanceCounter(&perf);

View file

@ -226,7 +226,6 @@ void HuAudFXListnerKill(void) {
void HuAudFXPauseAll(s32 pause) {
// msmSePauseAll(pause, 0x64);
return 12;
}
s32 HuAudFXStatusGet(int seNo) {

View file

@ -751,6 +751,3 @@ s32 HuTHPTotalFrameGet(void)
void HuTHPSetVolume(s32 left, s32 right)
{
}
// TODO remove
u8 fadeStat = 0;