Merge pull request #6140 from kwyxz/master

Update Haiku port to allow it to build again
This commit is contained in:
Twinaphex 2018-01-20 09:27:27 +01:00 committed by GitHub
commit 5c7778519b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 48 additions and 23 deletions

View File

@ -194,23 +194,23 @@ install: $(TARGET)
rm -f $(OBJDIR)/git_version.o rm -f $(OBJDIR)/git_version.o
mkdir -p $(DESTDIR)$(BIN_DIR) 2>/dev/null || /bin/true mkdir -p $(DESTDIR)$(BIN_DIR) 2>/dev/null || /bin/true
mkdir -p $(DESTDIR)$(GLOBAL_CONFIG_DIR) 2>/dev/null || /bin/true mkdir -p $(DESTDIR)$(GLOBAL_CONFIG_DIR) 2>/dev/null || /bin/true
mkdir -p $(DESTDIR)$(PREFIX)/share/applications 2>/dev/null || /bin/true mkdir -p $(DESTDIR)$(ASSETS_DIR)/applications 2>/dev/null || /bin/true
mkdir -p $(DESTDIR)$(MAN_DIR)/man6 2>/dev/null || /bin/true mkdir -p $(DESTDIR)$(MAN_DIR)/man6 2>/dev/null || /bin/true
mkdir -p $(DESTDIR)$(PREFIX)/share/pixmaps 2>/dev/null || /bin/true mkdir -p $(DESTDIR)$(ASSETS_DIR)/pixmaps 2>/dev/null || /bin/true
cp $(TARGET) $(DESTDIR)$(BIN_DIR) cp $(TARGET) $(DESTDIR)$(BIN_DIR)
cp tools/cg2glsl.py $(DESTDIR)$(BIN_DIR)/retroarch-cg2glsl cp tools/cg2glsl.py $(DESTDIR)$(BIN_DIR)/retroarch-cg2glsl
cp retroarch.cfg $(DESTDIR)$(GLOBAL_CONFIG_DIR) cp retroarch.cfg $(DESTDIR)$(GLOBAL_CONFIG_DIR)
cp retroarch.desktop $(DESTDIR)$(PREFIX)/share/applications cp retroarch.desktop $(DESTDIR)$(ASSETS_DIR)/applications
cp docs/retroarch.6 $(DESTDIR)$(MAN_DIR)/man6 cp docs/retroarch.6 $(DESTDIR)$(MAN_DIR)/man6
cp docs/retroarch-cg2glsl.6 $(DESTDIR)$(MAN_DIR)/man6 cp docs/retroarch-cg2glsl.6 $(DESTDIR)$(MAN_DIR)/man6
cp media/retroarch.svg $(DESTDIR)$(PREFIX)/share/pixmaps cp media/retroarch.svg $(DESTDIR)$(ASSETS_DIR)/pixmaps
chmod 755 $(DESTDIR)$(BIN_DIR)/$(TARGET) chmod 755 $(DESTDIR)$(BIN_DIR)/$(TARGET)
chmod 755 $(DESTDIR)$(BIN_DIR)/retroarch-cg2glsl chmod 755 $(DESTDIR)$(BIN_DIR)/retroarch-cg2glsl
chmod 644 $(DESTDIR)$(GLOBAL_CONFIG_DIR)/retroarch.cfg chmod 644 $(DESTDIR)$(GLOBAL_CONFIG_DIR)/retroarch.cfg
chmod 644 $(DESTDIR)$(PREFIX)/share/applications/retroarch.desktop chmod 644 $(DESTDIR)$(ASSETS_DIR)/applications/retroarch.desktop
chmod 644 $(DESTDIR)$(MAN_DIR)/man6/retroarch.6 chmod 644 $(DESTDIR)$(MAN_DIR)/man6/retroarch.6
chmod 644 $(DESTDIR)$(MAN_DIR)/man6/retroarch-cg2glsl.6 chmod 644 $(DESTDIR)$(MAN_DIR)/man6/retroarch-cg2glsl.6
chmod 644 $(DESTDIR)$(PREFIX)/share/pixmaps/retroarch.svg chmod 644 $(DESTDIR)$(ASSETS_DIR)/pixmaps/retroarch.svg
@if test -d media/assets; then \ @if test -d media/assets; then \
echo "Installing media assets..."; \ echo "Installing media assets..."; \
mkdir -p $(DESTDIR)$(ASSETS_DIR)/retroarch/assets/xmb; \ mkdir -p $(DESTDIR)$(ASSETS_DIR)/retroarch/assets/xmb; \
@ -224,10 +224,10 @@ uninstall:
rm -f $(DESTDIR)$(BIN_DIR)/retroarch rm -f $(DESTDIR)$(BIN_DIR)/retroarch
rm -f $(DESTDIR)$(BIN_DIR)/retroarch-cg2glsl rm -f $(DESTDIR)$(BIN_DIR)/retroarch-cg2glsl
rm -f $(DESTDIR)$(GLOBAL_CONFIG_DIR)/retroarch.cfg rm -f $(DESTDIR)$(GLOBAL_CONFIG_DIR)/retroarch.cfg
rm -f $(DESTDIR)$(PREFIX)/share/applications/retroarch.desktop rm -f $(DESTDIR)$(ASSETS_DIR)/applications/retroarch.desktop
rm -f $(DESTDIR)$(MAN_DIR)/man6/retroarch.6 rm -f $(DESTDIR)$(MAN_DIR)/man6/retroarch.6
rm -f $(DESTDIR)$(MAN_DIR)/man6/retroarch-cg2glsl.6 rm -f $(DESTDIR)$(MAN_DIR)/man6/retroarch-cg2glsl.6
rm -f $(DESTDIR)$(PREFIX)/share/pixmaps/retroarch.svg rm -f $(DESTDIR)$(ASSETS_DIR)/pixmaps/retroarch.svg
rm -rf $(DESTDIR)$(ASSETS_DIR)/retroarch rm -rf $(DESTDIR)$(ASSETS_DIR)/retroarch
clean: clean:

View File

@ -115,6 +115,13 @@ else
OSX := 0 OSX := 0
endif endif
ifneq ($(findstring Haiku,$(OS)),)
LIBS += -lroot -lnetwork
HAVE_UNIX = 1
else
LIBS += -lm
endif
ifneq ($(findstring Linux,$(OS)),) ifneq ($(findstring Linux,$(OS)),)
LIBS += -lrt LIBS += -lrt
OBJ += input/drivers/linuxraw_input.o \ OBJ += input/drivers/linuxraw_input.o \
@ -131,12 +138,6 @@ ifeq ($(TARGET), retroarch_3ds)
OBJ += frontend/drivers/platform_ctr.o OBJ += frontend/drivers/platform_ctr.o
endif endif
ifeq ($(findstring Haiku,$(OS)),)
LIBS += -lm
else
LIBS += -lroot -lnetwork
endif
# Git # Git
GIT_VERSION := $(shell git rev-parse --short HEAD 2>/dev/null) GIT_VERSION := $(shell git rev-parse --short HEAD 2>/dev/null)
@ -1108,7 +1109,8 @@ endif
endif endif
ifeq ($(HAVE_EGL), 1) ifeq ($(HAVE_EGL), 1)
DEFINES += -DHAVE_EGL DEFINES += -DHAVE_EGL $(EGL_CFLAGS)
LIBS += $(EGL_LIBS)
OBJ += gfx/common/egl_common.o OBJ += gfx/common/egl_common.o
endif endif

View File

@ -101,16 +101,18 @@ bool fill_pathname_application_data(char *s, size_t len)
const char *xdg = getenv("XDG_CONFIG_HOME"); const char *xdg = getenv("XDG_CONFIG_HOME");
const char *appdata = getenv("HOME"); const char *appdata = getenv("HOME");
/* XDG_CONFIG_HOME falls back to $HOME/.config. */ /* XDG_CONFIG_HOME falls back to $HOME/.config with most Unix systems */
/* On Haiku, it is set by default to /home/user/config/settings */
if (xdg) if (xdg)
{ {
fill_pathname_join(s, xdg, "retroarch", len); fill_pathname_join(s, xdg, "retroarch/", len);
return true; return true;
} }
if (appdata) if (appdata)
{ {
#ifdef __HAIKU__ #ifdef __HAIKU__
/* in theory never used as Haiku has XDG_CONFIG_HOME set by default */
fill_pathname_join(s, appdata, fill_pathname_join(s, appdata,
"config/settings/retroarch/", len); "config/settings/retroarch/", len);
#else #else

View File

@ -1226,6 +1226,8 @@ static void frontend_unix_get_os(char *s,
strlcpy(s, "DragonFly BSD", len); strlcpy(s, "DragonFly BSD", len);
#elif defined(BSD) #elif defined(BSD)
strlcpy(s, "BSD", len); strlcpy(s, "BSD", len);
#elif defined(__HAIKU__)
strlcpy(s, "Haiku", len);
#else #else
strlcpy(s, "Linux", len); strlcpy(s, "Linux", len);
#endif #endif

View File

@ -36,6 +36,9 @@
#ifdef __APPLE__ #ifdef __APPLE__
#include <CoreFoundation/CoreFoundation.h> #include <CoreFoundation/CoreFoundation.h>
#endif #endif
#ifdef __HAIKU__
#include <kernel/image.h>
#endif
#ifndef __MACH__ #ifndef __MACH__
#include <compat/strl.h> #include <compat/strl.h>
#include <compat/posix_string.h> #include <compat/posix_string.h>

View File

@ -10,10 +10,15 @@ add_define MAKEFILE NOUNUSED_VARIABLE "$HAVE_NOUNUSED_VARIABLE"
[ -z "$CROSS_COMPILE" ] && [ -d /opt/local/lib ] && add_dirs LIBRARY /opt/local/lib [ -z "$CROSS_COMPILE" ] && [ -d /opt/local/lib ] && add_dirs LIBRARY /opt/local/lib
[ "$GLOBAL_CONFIG_DIR" ] || \ [ "$GLOBAL_CONFIG_DIR" ] || \
{ case "$PREFIX" in {
/usr*) GLOBAL_CONFIG_DIR=/etc ;; if [ "$OS" = 'Haiku' ]; then
*) GLOBAL_CONFIG_DIR="$PREFIX"/etc ;; GLOBAL_CONFIG_DIR="$PREFIX"/settings
esac else
case "$PREFIX" in
/usr*) GLOBAL_CONFIG_DIR=/etc ;;
*) GLOBAL_CONFIG_DIR="$PREFIX"/etc ;;
esac
fi
} }
DYLIB=-ldl; DYLIB=-ldl;
@ -157,9 +162,16 @@ fi
add_define MAKEFILE libretro "$LIBRETRO" add_define MAKEFILE libretro "$LIBRETRO"
} }
if [ "$OS" = 'Haiku' ]; then
add_define MAKEFILE ASSETS_DIR "${ASSETS_DIR:-${PREFIX}/data}"
add_define MAKEFILE MAN_DIR "${MAN_DIR:-${PREFIX}/documentation/man}"
else
add_define MAKEFILE ASSETS_DIR "${ASSETS_DIR:-${PREFIX}/share}" add_define MAKEFILE ASSETS_DIR "${ASSETS_DIR:-${PREFIX}/share}"
add_define MAKEFILE BIN_DIR "${BIN_DIR:-${PREFIX}/bin}"
add_define MAKEFILE MAN_DIR "${MAN_DIR:-${PREFIX}/share/man}" add_define MAKEFILE MAN_DIR "${MAN_DIR:-${PREFIX}/share/man}"
fi
add_define MAKEFILE BIN_DIR "${BIN_DIR:-${PREFIX}/bin}"
if [ "$OS" = 'DOS' ]; then if [ "$OS" = 'DOS' ]; then
HAVE_SHADERPIPELINE=no HAVE_SHADERPIPELINE=no

View File

@ -1,7 +1,11 @@
MAKEFILE_DEFINES='' MAKEFILE_DEFINES=''
CONFIG_DEFINES='' CONFIG_DEFINES=''
[ "$PREFIX" ] || PREFIX="/usr/local" if [ "$OS" = 'Haiku' ]; then
[ "$PREFIX" ] || PREFIX="/boot/home/config/non-packaged"
else
[ "$PREFIX" ] || PREFIX="/usr/local"
fi
add_define() # $1 = MAKEFILE or CONFIG $2 = define $3 = value add_define() # $1 = MAKEFILE or CONFIG $2 = define $3 = value
{ eval "${1}_DEFINES=\"\${${1}_DEFINES} $2=$3\""; } { eval "${1}_DEFINES=\"\${${1}_DEFINES} $2=$3\""; }