summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Giffuni <pfg@apache.org>2016-12-08 01:56:31 +0000
committerPedro Giffuni <pfg@apache.org>2016-12-08 01:56:31 +0000
commit57c845b936f42051270e4932cc08d9e42db1bc08 (patch)
treeb4265f9942a83cc683bd480a15e154b4b8329433
parent654d16a64c3495c827f9576719d63ff0a3fa0576 (diff)
Update endianness detection on FreeBSD.
This produces a working AOO on FreeBSD PowerPC64! This is related to i126615 which was also fixed by Curtis a while ago. Kudos for both contributions, makes me want to get a PowerPC to run FreeBSD + AOO on it! Author: Curtis Hamilton -- cmhamilto at gmail
Notes
reject: wont apply
-rw-r--r--bridges/source/cpp_uno/gcc3_freebsd_powerpc64/makefile.mk2
-rw-r--r--bridges/source/cpp_uno/gcc3_freebsd_powerpc64/uno2cpp.cxx2
-rw-r--r--desktop/source/deployment/misc/dp_platform.cxx5
-rw-r--r--odk/settings/platform.mk3
-rw-r--r--odk/settings/settings.mk7
-rw-r--r--sal/inc/osl/endian.h6
-rw-r--r--sal/osl/unx/system.h8
-rw-r--r--solenv/gbuild/platform/freebsd.mk10
-rw-r--r--solenv/inc/libs.mk3
-rw-r--r--solenv/inc/unx.mk4
-rw-r--r--solenv/inc/unxfbsd.mk3
-rw-r--r--testtools/source/bridgetest/makefile.mk2
12 files changed, 44 insertions, 11 deletions
diff --git a/bridges/source/cpp_uno/gcc3_freebsd_powerpc64/makefile.mk b/bridges/source/cpp_uno/gcc3_freebsd_powerpc64/makefile.mk
index 701c628d6573..23e590d8b501 100644
--- a/bridges/source/cpp_uno/gcc3_freebsd_powerpc64/makefile.mk
+++ b/bridges/source/cpp_uno/gcc3_freebsd_powerpc64/makefile.mk
@@ -34,7 +34,7 @@ ENABLE_EXCEPTIONS=TRUE
# --- Files --------------------------------------------------------
-.IF "$(COM)$(OS)$(CPU)$(COMNAME)$(CPUNAME)" == "GCCLINUXPgcc3POWERPC64"
+.IF "$(COM)$(OS)$(CPU)$(COMNAME)$(CPUNAME)" == "GCCFREEBSDPgcc3POWERPC64"
.IF "$(cppu_no_leak)" == ""
CFLAGS += -DLEAK_STATIC_DATA
diff --git a/bridges/source/cpp_uno/gcc3_freebsd_powerpc64/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_freebsd_powerpc64/uno2cpp.cxx
index 0766a76939af..ff8982d4f49b 100644
--- a/bridges/source/cpp_uno/gcc3_freebsd_powerpc64/uno2cpp.cxx
+++ b/bridges/source/cpp_uno/gcc3_freebsd_powerpc64/uno2cpp.cxx
@@ -24,7 +24,7 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_bridges.hxx"
-#include <malloc.h>
+#include <stdlib.h>
#include <com/sun/star/uno/genfunc.hxx>
#include <uno/data.h>
diff --git a/desktop/source/deployment/misc/dp_platform.cxx b/desktop/source/deployment/misc/dp_platform.cxx
index 06ab4020bcf9..9a750cf28e36 100644
--- a/desktop/source/deployment/misc/dp_platform.cxx
+++ b/desktop/source/deployment/misc/dp_platform.cxx
@@ -57,6 +57,7 @@
#define PLATFORM_SOLARIS_SPARC64 "solaris_sparc64"
#define PLATFORM_SOLARIS_X86 "solaris_x86"
#define PLATFORM_FREEBSD_POWERPC "freebsd_powerpc"
+#define PLATFORM_FREEBSD_POWERPC64 "freebsd_powerpc64"
#define PLATFORM_FREEBSD_X86 "freebsd_x86"
#define PLATFORM_FREEBSD_X86_64 "freebsd_x86_64"
#define PLATFORM_MACOSX_X86 "macosx_x86"
@@ -135,6 +136,10 @@ namespace
ret = checkOSandCPU(OUSTR("kFreeBSD"), OUSTR("X86_64"));
else if (token.equals(OUSTR(PLATFORM_LINUX_SPARC)))
ret = checkOSandCPU(OUSTR("Linux"), OUSTR("SPARC"));
+ else if (token.equals(OUSTR(PLATFORM_FREEBSD_POWERPC)))
+ ret = checkOSandCPU(OUSTR("FreeBSD"), OUSTR("PowerPC"));
+ else if (token.equals(OUSTR(PLATFORM_FREEBSD_POWERPC64)))
+ ret = checkOSandCPU(OUSTR("FreeBSD"), OUSTR("PowerPC64"));
else if (token.equals(OUSTR(PLATFORM_LINUX_POWERPC)))
ret = checkOSandCPU(OUSTR("Linux"), OUSTR("PowerPC"));
else if (token.equals(OUSTR(PLATFORM_LINUX_POWERPC64)))
diff --git a/odk/settings/platform.mk b/odk/settings/platform.mk
index e026f15c5591..1d9a00f9a238 100644
--- a/odk/settings/platform.mk
+++ b/odk/settings/platform.mk
@@ -34,6 +34,9 @@ else
ifeq "$(UNOPKG_PLATFORM)" "Linux_PowerPC"
EXTENSION_PLATFORM=linux_powerpc
else
+ ifeq "$(UNOPKG_PLATFORM)" "FreeBSD_PowerPC64"
+ EXTENSION_PLATFORM=freebsd_powerpc64
+ else
ifeq "$(UNOPKG_PLATFORM)" "Linux_x86"
EXTENSION_PLATFORM=linux_x86
else
diff --git a/odk/settings/settings.mk b/odk/settings/settings.mk
index b4bb4f52a597..93b116306991 100644
--- a/odk/settings/settings.mk
+++ b/odk/settings/settings.mk
@@ -507,6 +507,9 @@ UNOPKG_PLATFORM=FreeBSD_x86_64
else
UNOPKG_PLATFORM=FreeBSD_x86
endif
+ifeq "$(PROCTYPE)" "powerpc"
+UNOPKG_PLATFORM=FreeBSD_ppc
+endif
endif
ifeq "$(PROCTYPE)" "x86_64"
@@ -515,6 +518,10 @@ else
JAVA_PROC_TYPE=i386
endif
+ifeq "$(PROCTYPE)" "powerpc64"
+JAVA_PROC_TYPE=ppc64
+endif
+
ifeq (kfreebsd,$(findstring kfreebsd,$(PLATFORM)))
OS=LINUX
else
diff --git a/sal/inc/osl/endian.h b/sal/inc/osl/endian.h
index 27e678a2a624..b1a010922f58 100644
--- a/sal/inc/osl/endian.h
+++ b/sal/inc/osl/endian.h
@@ -73,16 +73,14 @@ extern "C" {
#ifdef FREEBSD
# include <sys/param.h>
# include <machine/endian.h>
-#if __FreeBSD_version < 500000
# if BYTE_ORDER == LITTLE_ENDIAN
-# define _LITTLE_ENDIAN
+# undef _BIG_ENDIAN
# elif BYTE_ORDER == BIG_ENDIAN
-# define _BIG_ENDIAN
+# undef _LITTLE_ENDIAN
# elif BYTE_ORDER == PDP_ENDIAN
# define _PDP_ENDIAN
# endif
#endif
-#endif
#ifdef SCO
# include <sys/types.h>
diff --git a/sal/osl/unx/system.h b/sal/osl/unx/system.h
index beaaca3e2764..391fb30a474e 100644
--- a/sal/osl/unx/system.h
+++ b/sal/osl/unx/system.h
@@ -126,6 +126,8 @@
#endif
+#include <osl/endian.h>
+
#ifdef NETBSD
# define ETIME ETIMEDOUT
# define _POSIX_THREAD_SYSCALL_SOFT 1
@@ -176,15 +178,13 @@
# include <netinet/tcp.h>
# define IORESOURCE_TRANSFER_BSD
# include <machine/endian.h>
-#if __FreeBSD_version < 500000
# if BYTE_ORDER == LITTLE_ENDIAN
-# define _LITTLE_ENDIAN
+# undef _BIG_ENDIAN
# elif BYTE_ORDER == BIG_ENDIAN
-# define _BIG_ENDIAN
+# undef _LITTLE_ENDIAN
# elif BYTE_ORDER == PDP_ENDIAN
# define _PDP_ENDIAN
# endif
-#endif
# define NO_PTHREAD_RTL
#endif
diff --git a/solenv/gbuild/platform/freebsd.mk b/solenv/gbuild/platform/freebsd.mk
index af6fe921bcd0..225bdbb0df28 100644
--- a/solenv/gbuild/platform/freebsd.mk
+++ b/solenv/gbuild/platform/freebsd.mk
@@ -36,6 +36,10 @@ ifeq ($(CPU),X)
CPUNAME := X86_64
endif
+ifeq ($(CPU),P)
+CPUNAME := POWERPC64
+endif
+
# use CC/CXX if they are nondefaults
ifneq ($(origin CC),default)
gb_CC := $(CC)
@@ -68,6 +72,12 @@ else
gb_CPUDEFS := -DX86
endif
+ifeq ($(CPUNAME),POWERPC64)
+gb_CPUDEFS := -D$(CPUNAME)
+else
+gb_CPUDEFS := -DPOWERPC64
+endif
+
gb_CFLAGS := \
-Wall \
-Wendif-labels \
diff --git a/solenv/inc/libs.mk b/solenv/inc/libs.mk
index ceb4731e3de2..f9382be3bf39 100644
--- a/solenv/inc/libs.mk
+++ b/solenv/inc/libs.mk
@@ -237,6 +237,9 @@ NEON3RDLIB=$(SOLARLIBDIR)/libneon.dylib
.ELSE
NEON3RDLIB=-lneon
.ENDIF
+.IF "$(OS)" == "FREEBSD" && "$(CPUNAME)" == "POWERPC64"
+JPEG3RDLIB=/usr/local/lib/libjpeg.so
+.ENDIF
CURLLIB=-lcurl
SFX2LIB=-lsfx$(DLLPOSTFIX)
SFXLIB=-lsfx$(DLLPOSTFIX)
diff --git a/solenv/inc/unx.mk b/solenv/inc/unx.mk
index 57a47f441e74..1f4383b38a0a 100644
--- a/solenv/inc/unx.mk
+++ b/solenv/inc/unx.mk
@@ -95,6 +95,10 @@
.INCLUDE : unxlngppc64.mk
.ENDIF
+.IF "$(COM)$(OS)$(CPU)$(CPUNAME)" == "GCCFREEBSDPPOWERPC64"
+.INCLUDE : unxfbsdp.mk
+.ENDIF
+
.IF "$(COM)$(OS)$(CPU)$(CPUNAME)" == "GCCLINUX3S390"
.INCLUDE : unxlngs390.mk
.ENDIF
diff --git a/solenv/inc/unxfbsd.mk b/solenv/inc/unxfbsd.mk
index a7fc04104119..87464b3be866 100644
--- a/solenv/inc/unxfbsd.mk
+++ b/solenv/inc/unxfbsd.mk
@@ -37,6 +37,9 @@ JAVAFLAGSDEBUG=-g
.IF "$(CPUNAME)" == "X86_64"
.INCLUDE : unxfbsdx.mk
.ENDIF
+.IF "$(CPUNAME)" == "POWERPC64"
+.INCLUDE : unxfbsdp.mk
+.ENDIF
.IF "$(CPUNAME)" == "POWERPC"
.INCLUDE : unxfbsdppc.mk
.ENDIF
diff --git a/testtools/source/bridgetest/makefile.mk b/testtools/source/bridgetest/makefile.mk
index fc17c47663d8..c2037556fb80 100644
--- a/testtools/source/bridgetest/makefile.mk
+++ b/testtools/source/bridgetest/makefile.mk
@@ -134,7 +134,7 @@ ALLTAR: \
runtest : $(DLLDEST)$/uno_types.rdb $(DLLDEST)$/uno_services.rdb makefile.mk \
$(SHL1TARGETN) $(SHL2TARGETN) $(SHL3TARGETN)
-.IF "$(COM)$(OS)$(CPU)" == "GCCMACOSXP" || "$(OS)$(CPU)"=="SOLARISS"
+.IF "$(COM)$(OS)$(CPU)" == "GCCMACOSXP" || "$(OS)$(CPU)"=="SOLARISS" || "$(COM)$(OS)$(CPU)"=="GCCFREEBSDP"
@echo "Mac OSX PPC GCC and Solaris fails this test! likely broken UNO bridge. Fix me."
.ELSE
cd $(DLLDEST) && $(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/uno \