mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 03:34:15 +01:00
Hydra OSX support
This commit is contained in:
parent
957ee36c75
commit
069627a7fc
2
Makefile
2
Makefile
@ -480,7 +480,7 @@ endif
|
|||||||
check: $(TESTELF)
|
check: $(TESTELF)
|
||||||
@cp $< $(HEADLESSELF)
|
@cp $< $(HEADLESSELF)
|
||||||
$(PATCHELF) $(HEADLESSELF) gTestRunnerHeadless '\x01' gTestRunnerSkipIsFail "$(TEST_SKIP_IS_FAIL)"
|
$(PATCHELF) $(HEADLESSELF) gTestRunnerHeadless '\x01' gTestRunnerSkipIsFail "$(TEST_SKIP_IS_FAIL)"
|
||||||
$(ROMTESTHYDRA) $(ROMTEST) $(HEADLESSELF)
|
$(ROMTESTHYDRA) $(ROMTEST) $(OBJCOPY) $(HEADLESSELF)
|
||||||
|
|
||||||
libagbsyscall:
|
libagbsyscall:
|
||||||
@$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN) MODERN=$(MODERN)
|
@$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN) MODERN=$(MODERN)
|
||||||
|
@ -23,7 +23,9 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
|
#ifndef __APPLE__
|
||||||
#include <sys/prctl.h>
|
#include <sys/prctl.h>
|
||||||
|
#endif
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
@ -176,9 +178,9 @@ static void exit2(int _)
|
|||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
if (argc < 3)
|
if (argc < 4)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "usage %s mgba-rom-test rom\n", argv[0]);
|
fprintf(stderr, "usage %s mgba-rom-test objcopy rom\n", argv[0]);
|
||||||
exit(2);
|
exit(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,7 +207,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
int elffd;
|
int elffd;
|
||||||
if ((elffd = open(argv[2], O_RDONLY)) == -1)
|
if ((elffd = open(argv[3], O_RDONLY)) == -1)
|
||||||
{
|
{
|
||||||
perror("open elffd failed");
|
perror("open elffd failed");
|
||||||
exit(2);
|
exit(2);
|
||||||
@ -264,11 +266,13 @@ int main(int argc, char *argv[])
|
|||||||
perror("fork mgba-rom-test failed");
|
perror("fork mgba-rom-test failed");
|
||||||
exit(2);
|
exit(2);
|
||||||
} else if (pid == 0) {
|
} else if (pid == 0) {
|
||||||
|
#ifndef __APPLE__
|
||||||
if (prctl(PR_SET_PDEATHSIG, SIGTERM) == -1)
|
if (prctl(PR_SET_PDEATHSIG, SIGTERM) == -1)
|
||||||
{
|
{
|
||||||
perror("prctl failed");
|
perror("prctl failed");
|
||||||
_exit(2);
|
_exit(2);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
if (getppid() != parent_pid) // Parent died.
|
if (getppid() != parent_pid) // Parent died.
|
||||||
{
|
{
|
||||||
_exit(2);
|
_exit(2);
|
||||||
@ -332,6 +336,36 @@ int main(int argc, char *argv[])
|
|||||||
_exit(2);
|
_exit(2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef __APPLE__
|
||||||
|
pid_t objcopypid = fork();
|
||||||
|
if (objcopypid == -1)
|
||||||
|
{
|
||||||
|
perror("fork objcopy failed");
|
||||||
|
_exit(2);
|
||||||
|
}
|
||||||
|
else if (objcopypid == 0)
|
||||||
|
{
|
||||||
|
if (execlp(argv[2], argv[2], "-O", "binary", rom_path, rom_path, NULL) == -1)
|
||||||
|
{
|
||||||
|
perror("execlp objcopy failed");
|
||||||
|
_exit(2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int wstatus;
|
||||||
|
if (waitpid(objcopypid, &wstatus, 0) == -1)
|
||||||
|
{
|
||||||
|
perror("waitpid objcopy failed");
|
||||||
|
_exit(2);
|
||||||
|
}
|
||||||
|
if (!WIFEXITED(wstatus) || WEXITSTATUS(wstatus) != 0)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "objcopy exited with an error\n");
|
||||||
|
_exit(2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
// stdbuf is required because otherwise mgba never flushes
|
// stdbuf is required because otherwise mgba never flushes
|
||||||
// stdout.
|
// stdout.
|
||||||
if (execlp("stdbuf", "stdbuf", "-oL", argv[1], "-l15", "-ClogLevel.gba.dma=16", "-Rr0", rom_path, NULL) == -1)
|
if (execlp("stdbuf", "stdbuf", "-oL", argv[1], "-l15", "-ClogLevel.gba.dma=16", "-Rr0", rom_path, NULL) == -1)
|
||||||
|
3147
tools/patchelf/elf.h
Normal file
3147
tools/patchelf/elf.h
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
|||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <elf.h>
|
#include "elf.h"
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
Loading…
Reference in New Issue
Block a user