Date: Sun, 7 Jun 1998 14:20:19 +0200 From: Ollivier Robert <roberto@keltia.freenix.fr> To: Vladimir Kushnir <kushn@mail.kar.net> Cc: "FreeBSD Current Users' list" <freebsd-current@FreeBSD.ORG> Subject: Patches for XFree86 ELF build Message-ID: <19980607142019.A22822@keltia.freenix.fr> In-Reply-To: <19980528123617.46624@rf900.physics.usyd.edu.au>; from David Dawes on Thu, May 28, 1998 at 12:36:17PM %2B1000 References: <199805270920.CAA01664@rah.star-gate.com> <199805270939.LAA17351@sos.freebsd.dk> <19980527230443.A23502@keltia.freenix.fr> <19980528123617.46624@rf900.physics.usyd.edu.au>
next in thread | previous in thread | raw e-mail | index | archive | help
Here are the patches to build an ELF version of XFree86, they're not that
big so I figured I could post them here.
Caveats :
- they're against 3.3.1 and not 3.3.2 as I thought (that should not be a
problem).
- I've cleaned them up somewhat...
- I'm using egcs/pgcc in ELF mode not the default compiler so "-elf" can't
be used. The build should be done with an ELF /usr/bin/cc (which I don't
have for now).
- I use "ELF=yes" from inside /etc/make.conf to enable ELF building. You
may want to find another way...
diff -ur xc/config/cf/FreeBSD.cf xc.new/config/cf/FreeBSD.cf
--- xc/config/cf/FreeBSD.cf Sun Jun 29 10:43:25 1997
+++ xc.new/config/cf/FreeBSD.cf Thu Feb 5 20:03:08 1998
@@ -49,7 +49,11 @@
#define MkdirHierCmd mkdir -p
-#define CcCmd cc
+#ifdef ELF
+#define CcCmd gcc
+#else
+#define CcCmd cc
+#endif
#define CppCmd /usr/libexec/cpp
#define PreProcessCmd CppCmd
#define StandardCppDefines -traditional
@@ -180,7 +184,11 @@
#if GccUsesGas
# define GccGasOption -DGCCUSESGAS
-# define AsmDefines -DUSE_GAS
+# ifdef ELF
+# define AsmDefines -DUSE_GAS -D__ELF__
+# else
+# define AsmDefines -DUSE_GAS
+# endif
#else
# define GccGasOption /**/
#endif
@@ -210,14 +218,14 @@
/* The GCC strength-reduce bug is fixed for FreeBSD 2.1.5 and later */
#ifndef DefaultGcc2i386Opt
#if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion > 1) || (OSMajorVersion == 2 && OSMinorVersion == 1 && OSTeenyVersion >= 5)
-#define DefaultGcc2i386Opt -O2
+#define DefaultGcc2i386Opt -O3 -pipe -fno-inline
#endif
#endif
#ifdef i386Architecture
# define OptimizedCDebugFlags DefaultGcc2i386Opt
#else
-# define OptimizedCDebugFlags -O2
+# define OptimizedCDebugFlags -O3 -fno-inline
#endif
#ifndef PreIncDir
@@ -311,6 +319,12 @@
#if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion >= 1)
#define HasBsdMake YES
#endif
+
+#define BuildDynamicLoading YES
+#define HasSharedLibraries YES
+#ifdef ELF
+# define UseElfFormat YES
+#endif /* ELF */
#ifndef StaticLibrary
#define StaticLibrary(libpath,libname) -Wl,-Bstatic Concat(-L,libpath) Concat(-l,libname) -Wl,-Bdynamic
diff -ur xc/config/cf/bsdLib.rules xc.new/config/cf/bsdLib.rules
--- xc/config/cf/bsdLib.rules Sun May 11 07:04:04 1997
+++ xc.new/config/cf/bsdLib.rules Sat Jan 31 16:19:44 1998
@@ -228,6 +228,21 @@
#endif /* SharedLibraryTarget */
+#ifndef SharedDepModuleTarget
+#define SharedDepModuleTarget(name,deps,solist) @@\
+AllTarget(name) @@\
+ @@\
+name: deps @@\
+ $(RM) $@~ @@\
+ $(CC) -o $@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS) BaseShLibReqs @@\
+ $(RM) $@ @@\
+ $(MV) $@~ $@ @@\
+ @@\
+clean:: @@\
+ $(RM) name
+
+#endif /* SharedDepModuleTarget */
+
/*
* SharedLibraryDataTarget - generate rules to create shlib data file;
*/
diff -ur xc/config/cf/xf86.rules xc.new/config/cf/xf86.rules
--- xc/config/cf/xf86.rules Sun May 18 14:00:01 1997
+++ xc.new/config/cf/xf86.rules Sat Jan 31 17:34:21 1998
@@ -162,6 +162,19 @@
/*
* DynamicModuleTarget - build a module to be dynamically loaded
*/
+#ifdef UseElfFormat
+#ifndef DynamicModuleTarget
+#define DynamicModuleTarget(module,modlist) @@\
+AllTarget(module) @@\
+ @@\
+module: modlist @@\
+ RemoveFile($@) @@\
+ $(CC) -o $@ $(SHLIBLDFLAGS) -Wl,-soname,$@ modlist @@\
+ @@\
+clean:: @@\
+ RemoveFile(module)
+#endif /* DynamicModuleTarget */
+#else
#ifndef DynamicModuleTarget
#define DynamicModuleTarget(module,modlist) @@\
AllTarget(module) @@\
@@ -173,7 +186,7 @@
clean:: @@\
RemoveFile(module)
#endif /* DynamicModuleTarget */
-
+#endif /* UseElfFormat */
/*
* InstallDynamicModule - install a dynamic module
*/
diff -ur xc/programs/Xserver/hw/xfree86/os-support/assyntax.h xc.new/programs/Xserver/hw/xfree86/os-support/assyntax.h
--- xc/programs/Xserver/hw/xfree86/os-support/assyntax.h Sun May 11 04:56:22 1997
+++ xc.new/programs/Xserver/hw/xfree86/os-support/assyntax.h Thu Feb 5 21:06:03 1998
@@ -212,7 +212,7 @@
#endif /* ACK_ASSEMBLER */
-#if defined(Lynx) || (defined(SYSV) || defined(SVR4)) && !defined(ACK_ASSEMBLER) || (defined(linux) || defined(__OS2ELF__)) && defined(__ELF__)
+#if defined(__FreeBSD__) || defined(Lynx) || (defined(SYSV) || defined(SVR4)) && !defined(ACK_ASSEMBLER) || (defined(linux) || defined(__OS2ELF__)) && defined(__ELF__)
#define GLNAME(a) a
#else
#define GLNAME(a) CONCAT(_,a)
Only in xc/programs/Xserver/hw/xfree86/vga256/drivers/mga/util: Makefile
diff -ur xc/programs/Xserver/hw/xfree86/xaa/xf86expblt.c xc.new/programs/Xserver/hw/xfree86/xaa/xf86expblt.c
--- xc/programs/Xserver/hw/xfree86/xaa/xf86expblt.c Sat Jul 26 08:30:58 1997
+++ xc.new/programs/Xserver/hw/xfree86/xaa/xf86expblt.c Fri Feb 6 00:18:17 1998
@@ -83,7 +83,7 @@
#if defined(__GNUC__) && defined(__i386__)
static __inline__ unsigned int reverse_bitorder(data) {
-#if defined(Lynx) || (defined(SYSV) || defined(SVR4)) && !defined(ACK_ASSEMBLER) || (defined(linux) || defined (__OS2ELF__)) && defined(__ELF__)
+#if defined(__FreeBSD__) || defined(Lynx) || (defined(SYSV) || defined(SVR4)) && !defined(ACK_ASSEMBLER) || (defined(linux) || defined (__OS2ELF__)) && defined(__ELF__)
__asm__(
"movl $0,%%ecx\n"
"movb %%al,%%cl\n"
--
Ollivier ROBERT -=- FreeBSD: The Power to Serve! -=- roberto@keltia.freenix.fr
FreeBSD keltia.freenix.fr 3.0-CURRENT #60: Fri May 15 21:04:22 CEST 1998
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19980607142019.A22822>
