diff --git a/cint/cintex/src/CINTFunctional.cxx b/cint/cintex/src/CINTFunctional.cxx index d1abfb23b80d9f9c4ac6fee5836552eca7838367..e4956124334735f17057160af5869395a74f68e3 100644 --- a/cint/cintex/src/CINTFunctional.cxx +++ b/cint/cintex/src/CINTFunctional.cxx @@ -461,7 +461,7 @@ namespace ROOT { namespace Cintex { } //------ Function models------------------------------------------------------------------- -#ifdef R__B64 +#if defined(R__B64) && !defined(__ILP32__) #define FUNCPATTERN 0xFAFAFAFAFAFAFAFAL #define DATAPATTERN 0xDADADADADADADADAL #else diff --git a/config/ARCHS b/config/ARCHS index 8e5cf9e110eae6d2d99ad0498c6e43de67f42770..7793ecfc1243b9ab48121a97c9356c41e3362fa7 100644 --- a/config/ARCHS +++ b/config/ARCHS @@ -23,6 +23,7 @@ linuxppcgcc for PPC Linux with gcc linuxppc64gcc for PPC 64 Linux with gcc >= 3 linuxx8664gcc for x86-64 Linux with gcc >= 3.x linuxx8664icc for x86-64 Linux with Intel icc >=10.x +linuxx32gcc for x32 Linux ABI with gcc >= 4.7 lynxos for LynxOS with gcc macosx for MacOS X >= 10.4 with gcc macosxicc for MacOS X >= 10.4 with Intel icc (Intel only) diff --git a/config/Makefile.linuxx32gcc b/config/Makefile.linuxx32gcc new file mode 100644 index 0000000000000000000000000000000000000000..6a18f7012afcbaef68e390dbe43ef2b674c8794a --- /dev/null +++ b/config/Makefile.linuxx32gcc @@ -0,0 +1,78 @@ +# -*- mode: makefile -*- +# +# Makefile of ROOT for x32 bit ABI ("64bit with 32bit pointers") on Linux with gcc + +PLATFORM = linux + +DEBUGFLAGS = -g +OPTFLAGS = -O2 +ifeq (debug,$(findstring debug,$(ROOTBUILD))) +OPT = $(DEBUGFLAGS) +NOOPT = +else +OPT = $(OPTFLAGS) +NOOPT = +endif +ifeq ($(CXX11),yes) +CXX11FLAGS = -std=c++11 -Wno-deprecated-declarations +endif + +# Compiler: +CXX = g++ +CC = gcc +CXXFLAGS = -pipe -mx32 -Wshadow -Wall -W -Woverloaded-virtual \ + -fPIC $(EXTRA_CXXFLAGS) $(CXX11FLAGS) +CFLAGS = -pipe -mx32 -Wshadow -Wall -W -fPIC $(EXTRA_CFLAGS) +CINTCXXFLAGS = -pipe -mx32 -Wall -W -Woverloaded-virtual \ + -fPIC $(EXTRA_CXXFLAGS) $(CXX11FLAGS) \ + -DG__REGEXP -DG__UNIX -DG__SHAREDLIB \ + -DG__OSFDLL -DG__ROOT -DG__REDIRECTIO \ + -DG__STD_EXCEPTION +CINTCFLAGS = -pipe -mx32 -Wall -W -fPIC $(EXTRA_CFLAGS) \ + -DG__REGEXP -DG__UNIX -DG__SHAREDLIB \ + -DG__OSFDLL -DG__ROOT -DG__REDIRECTIO \ + -DG__STD_EXCEPTION +COMPILER = gnu + +# Linker: +LD = g++ +LDFLAGS = -mx32 $(OPT) $(EXTRA_LDFLAGS) -Wl,--no-undefined -Wl,--as-needed +SOFLAGS = -shared -Wl,-soname, +SOEXT = so + +# System libraries: +SYSLIBS = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) \ + $(ALLOCLIBDIR) $(ALLOCLIB) -rdynamic +XLIBS = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11 +CILIBS = -lm -ldl -rdynamic +CRYPTLIBS = -lcrypt + +# Fortran: +ifneq ($(findstring gfortran, $(F77)),) +ifeq ($(F77),) +# only needed to get default compiler in ./configure +F77 = gfortran +endif +F77FLAGS = -fPIC -mx32 -std=legacy +ifneq ($(shell $(F77) -mx32 -print-file-name=libgfortran.$(SOEXT)),libgfortran.$(SOEXT)) +F77LIBS := $(shell $(F77) -mx32 -print-file-name=libgfortran.$(SOEXT)) +else +F77LIBS := $(shell $(F77) -mx32 -print-file-name=libgfortran.a) +endif +F77LIBS += $(shell $(F77) -mx32 -print-file-name=libgfortranbegin.a) +endif + +ifneq ($(findstring g77, $(F77)),) +ifeq ($(F77),) +# only needed to get default compiler in ./configure +F77 = g77 +endif +F77FLAGS = -fPIC -mx32 +ifneq ($(shell $(F77) -print-file-name=libg2c.so),libg2c.so) +F77LIBS := $(shell $(F77) -mx32 -print-file-name=libg2c.so) -lnsl +else +F77LIBS := $(shell $(F77) -mx32 -print-file-name=libg2c.a) -lnsl +endif +endif + +# Extra diff --git a/config/root-config.in b/config/root-config.in index 01c5848d7bfe4c13acbc78d8e79efd032b2e7fb2..b06028ea0987d6f726fd6b37ece1c834c149c66d 100755 --- a/config/root-config.in +++ b/config/root-config.in @@ -313,6 +313,12 @@ linuxx8664icc) auxcflags= auxlibs="-limf -lm -ldl" ;; +linuxx32gcc) + # x32 ABI (64 bit mode with 32 bit pointers) Linux with gcc > 4.7 + auxcflags="-mx32" + auxldflags="-mx32" + auxlibs="-lm -ldl -rdynamic" + ;; linuxalphagcc) # Alpha Linux with gcc auxcflags= diff --git a/configure b/configure index 562505eb11534f4e9515ac69cffcaedcb33f9d49..dc70c2339b18a7861c632e72f7923aedc74c67f2 100755 --- a/configure +++ b/configure @@ -1231,6 +1231,7 @@ guess_architecture() { hurd*:*:*) arch=hurddeb ;; linux:ia64:*) arch=linuxia64gcc ;; linux:x86_64:*) arch=linuxx8664gcc ;; + linux:x32:*) arch=linuxx32gcc ;; linux:alpha:*) arch=linuxalphagcc ;; linux:arm*:*) arch=linuxarm ;; linux:hppa*:*) arch=linux ;; @@ -1769,6 +1770,9 @@ linuxx8664*) logmsg "Will check 64bit libraries" checklinux64="yes" checklib64="yes" ;; +linuxx32*) + logmsg "Will check x32 libraries in the future" + logmsg "For now expect proper libraries through configure flags" ;; hpuxia64acc) logmsg "Will check HP/UX 64bit libraries" checkhpux64="yes" ;; diff --git a/core/lzma/Module.mk b/core/lzma/Module.mk index 9c62a21e7105ea35075a528a400f91fbf6a0d4ec..45302ebb815e824bfc0c625be051cb81b1c1cebd 100644 --- a/core/lzma/Module.mk +++ b/core/lzma/Module.mk @@ -118,7 +118,11 @@ else fi; \ if [ $(ARCH) = "linuxx8664gcc" ]; then \ LZMACC="$$LZMACC -m64"; \ - LZMA_CFLAGS="-m64"; \ + LZMA_CFLAGS="-mx32"; \ + fi; \ + if [ $(ARCH) = "linuxx32gcc" ]; then \ + LZMACC="$$LZMACC -mx32"; \ + LZMA_CFLAGS="-mx32"; \ fi; \ if [ $(ARCH) = "linuxicc" ]; then \ LZMACC="$$LZMACC -m32"; \ diff --git a/core/pcre/Module.mk b/core/pcre/Module.mk index 81e8697e9f6099b57ded19da3dacf1dc58a3f108..8f9143d3ddebd9df267c4bd00a5552f01efac017 100644 --- a/core/pcre/Module.mk +++ b/core/pcre/Module.mk @@ -97,6 +97,9 @@ else if [ $(ARCH) = "linuxx8664gcc" ]; then \ PCRE_CFLAGS="-m64"; \ fi; \ + if [ $(ARCH) = "linuxx32gcc" ]; then \ + PCRE_CFLAGS="-mx32"; \ + fi; \ if [ $(ARCH) = "linuxicc" ]; then \ PCRE_CFLAGS="-m32"; \ fi; \ diff --git a/graf2d/asimage/Module.mk b/graf2d/asimage/Module.mk index beee7e21c144b267d0572f0269ffd07cefd883ce..2c37e586e5d49d520c81504ea8cf82186cd5c862 100644 --- a/graf2d/asimage/Module.mk +++ b/graf2d/asimage/Module.mk @@ -158,6 +158,10 @@ else ACC="$$ACC -m64"; \ MMX="--enable-mmx-optimization=no"; \ fi; \ + if [ "$(ARCH)" = "linuxx32gcc" ]; then \ + ACC="$$ACC -mx32"; \ + MMX="--enable-mmx-optimization=no"; \ + fi; \ if [ "$(ARCH)" = "linuxicc" ]; then \ ACC="$$ACC -m32"; \ fi; \