diff options
author | Pedro Giffuni <pfg@apache.org> | 2016-12-08 01:56:31 +0000 |
---|---|---|
committer | Pedro Giffuni <pfg@apache.org> | 2016-12-08 01:56:31 +0000 |
commit | 57c845b936f42051270e4932cc08d9e42db1bc08 (patch) | |
tree | b4265f9942a83cc683bd480a15e154b4b8329433 | |
parent | 654d16a64c3495c827f9576719d63ff0a3fa0576 (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.mk | 2 | ||||
-rw-r--r-- | bridges/source/cpp_uno/gcc3_freebsd_powerpc64/uno2cpp.cxx | 2 | ||||
-rw-r--r-- | desktop/source/deployment/misc/dp_platform.cxx | 5 | ||||
-rw-r--r-- | odk/settings/platform.mk | 3 | ||||
-rw-r--r-- | odk/settings/settings.mk | 7 | ||||
-rw-r--r-- | sal/inc/osl/endian.h | 6 | ||||
-rw-r--r-- | sal/osl/unx/system.h | 8 | ||||
-rw-r--r-- | solenv/gbuild/platform/freebsd.mk | 10 | ||||
-rw-r--r-- | solenv/inc/libs.mk | 3 | ||||
-rw-r--r-- | solenv/inc/unx.mk | 4 | ||||
-rw-r--r-- | solenv/inc/unxfbsd.mk | 3 | ||||
-rw-r--r-- | testtools/source/bridgetest/makefile.mk | 2 |
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 \ |