Hi, (Branden: I hope you don't mind the CC) this is my first (actually second) go at sanitizing the X configuration on the GNU platform. This process will take some time, with several steps involved. First step is to get the configuration fixed and the Debian rules files adapted, so we can build the libs and the clients from the Debian packages (we will get the servers for free, too, although they will not cooperate with the Hurd out of the box). There are a couple of XXX marks, please look through them and comment if you can. The issues are: Will X work with our CThreads? Will X notice that shm fails and deal? Should we define NO_ALLOCA? What about rpath? etc. The Shared library rules are straight from their Linux counter parts, with the a.out garbage stripped. Same for the config, with some adjustments from the prior file and the c thread stuff. I could imagine that both could share the same file at least for *Lib.{rules,tmpl}. We could even use the Linux files by defining appropriate symbols (UseElfFormat etc), but it would be a bit clumsy because of the binutils version mess and the rpath mess (see ExtraLoadFlags). Probably we also need to restrict the number of servers we build. The next step is to adjust imake, it needs some work or the defaults will be wrong. Thanks, Marcus -- `Rhubarb is no Egyptian god.' Debian http://www.debian.org Check Key server Marcus Brinkmann GNU http://www.gnu.org for public PGP Key [EMAIL PROTECTED], [EMAIL PROTECTED] PGP Key ID 36E7CD09 http://homepage.ruhr-uni-bochum.de/Marcus.Brinkmann/ [EMAIL PROTECTED]
XCOMM platform: $XFree86: xc/config/cf/gnu.cf,v 1.2.2.2 1998/12/22 12:27:31 hohndel Exp $ #ifndef OSName #define OSName DefaultOSName #endif #ifndef OSVendor #define OSVendor /**/ #endif #ifndef OSMajorVersion #define OSMajorVersion DefaultOSMajorVersion #endif #ifndef OSMinorVersion #define OSMinorVersion DefaultOSMinorVersion #endif #ifndef OSTeenyVersion #define OSTeenyVersion DefaultOSTeenyVersion #endif XCOMM operating system: OSName (OSMajorVersion./**/OSMinorVersion./**/OSTeenyVersion) #define GNUSourceDefines -D_POSIX_C_SOURCE=199309L \ -D_POSIX_SOURCE -D_XOPEN_SOURCE=500L \ -D_BSD_SOURCE -D_SVID_SOURCE -D__ELF__ #define XawI18nDefines -DHAS_WCHAR_H -DHAS_WCTYPE_H -DNO_WIDEC_H XCOMM XXX Can we do this? #define HasCThreads YES #define ThreadedX YES #define HasThreadSafeAPI YES #define ThreadsLibraries -lthreads #define SystemMTDefines -D_REENTRANT #define HasSecureRPC YES #ifndef HasLibCrypt #define HasLibCrypt YES #endif #define HasGcc YES #define HasGcc2 YES #ifndef HasGcc2ForCplusplus # define HasGcc2ForCplusplus YES #endif #define GccUsesGas YES #define UseGas YES #define GnuCpp YES #ifndef HasShadowPasswd # define HasShadowPasswd YES #endif #define HasPutenv YES XCOMM XXX Not implemented and will always fail, should we say YES anyway? #define HasShm NO #define HasBSD44Sockets YES #define HasSockets YES #define HasSnprintf YES #define HasMkstemp YES #ifndef HasPam #define HasPam NO #endif #define AvoidNullMakeCommand YES #define StripInstalledPrograms YES #define CompressAllFonts YES XCOMM XXX TEST!!! #define Malloc0ReturnsNull NO #define Malloc0ReturnsNull YES #define NeedConstPrototypes YES #define NeedFunctionPrototypes YES #define NeedNestedPrototypes YES #define NeedVarargsPrototypes YES #ifndef NeedWidePrototypes #define NeedWidePrototypes NO #endif #define SetTtyGroup YES #ifndef UseStaticTermcapLib #define UseStaticTermcapLib NO #endif #define MkdirHierCmd mkdir -p #define CcCmd gcc #define AsCmd as #define LdCmd ld XCOMM XXX -DUSE_GAS??? #define AsmDefines -D__ELF__ #define CplusplusCmd c++ #if UseStaticTermcapLib #define TermcapLibrary StaticLibrary(/usr/lib,ncurses) #else #define TermcapLibrary -lncurses #endif #ifndef BuildDynamicLoading #define BuildDynamicLoading YES #endif #define CppCmd /lib/cpp #ifdef USE_BYACC #define YaccCmd byacc #else #define YaccCmd bison -y #endif #define LexCmd flex -l #define LexLib -lfl #define PreProcessCmd CcCmd -E #define PostIncDir DefaultGccIncludeDir #define LdCombineFlags -r #define LdPostLib /* Never needed */ #define HasWChar32 YES #define StandardCppDefines -traditional StandardDefines XCOMM i386Architecture #define OptimizedCDebugFlags DefaultGcc2i386Opt #define GNUMachineDefines -D__i386__ XCOMM XXX Does it grok PART_NET? #define ServerOSDefines XFree86ServerOSDefines -DDDXTIME -DPART_NET XCOMM XXX Really NO_ALLOCA? #define ServerExtraDefines -DGCCUSESGAS XFree86ServerDefines -DNO_ALLOCA #define StandardDefines -D__GNU__ GNUMachineDefines GNUSourceDefines #define DlLibrary -rdynamic -ldl #if BuildDynamicLoading #define ServerExtraSysLibs DlLibrary #else #define ServerExtraSysLibs /**/ #endif #define ConnectionFlags -DUNIXCONN -DTCPCONN #define HasZlib YES /* Some of these man page defaults are overriden in the above OS sections */ #ifndef ManSuffix # define ManSuffix 1x #endif #ifndef ManDir # define ManDir $(MANSOURCEPATH)1 #endif #ifndef LibManSuffix # define LibManSuffix 3x #endif #ifndef LibmanDir # define LibmanDir $(MANSOURCEPATH)3 #endif #ifndef FileManSuffix # define FileManSuffix 5x #endif #ifndef FileManDir # define FileManDir $(MANSOURCEPATH)5 #endif #ifndef StaticLibrary #define StaticLibrary(libpath,libname) -Wl,-Bstatic Concat(-L,libpath) Concat(-l,libname) -Wl,-Bdynamic #endif #define HasGnuMake YES #define MakeNamedTargetSubdir(dir,flags,subname)\ $(MAKE) -C dir $(MFLAGS) $(PARALLELMFLAGS) flags subname #define UseGccMakeDepend YES #define XserverNeedsSetUID YES #define HasSharedLibraries YES #include <gnuLib.rules> XCOMM XXX Might need this if they are not careful with slashes. XCOMM #define DirFailPrefix - XCOMM XXX BSD defines it, Linux not. XCOMM #define HasNdbm YES XCOMM #define HasPoll YES #include <xfree86.cf>
/* * GNU/Hurd shared library rules * * $XFree86: xc/config/cf/gnuLib.rules,v 1.1.2.2 1998/12/22 12:27:32 hohndel Exp $ */ /* * GNU/Hurd shared library rules * Cloned from Linux (ELF) shared library rules * */ #ifndef HasSharedLibraries #define HasSharedLibraries YES #endif #ifndef ForceNormalLib #define ForceNormalLib NO #endif #undef SpecialMalloc #define SpecialMalloc NO #undef UseInternalMalloc #define UseInternalMalloc NO #define BaseShLibReqs -lc #ifndef SharedDataSeparation #define SharedDataSeparation NO #endif #ifndef SharedCodeDef #define SharedCodeDef /**/ #endif #ifndef SharedLibraryDef #define SharedLibraryDef /**/ #endif #ifndef ShLibIncludeFile #define ShLibIncludeFile <gnuLib.tmpl> #endif #ifndef SharedLibraryLoadFlags XCOMM XXX To rpath or not to rpath... XCOMM #define SharedLibraryLoadFlags -shared -Wl,-rpath=$(USRLIBDIR) #define SharedLibraryLoadFlags -shared #endif #ifndef PositionIndependentCFlags #define PositionIndependentCFlags -fPIC #endif #ifndef PositionIndependentCplusplusFlags #define PositionIndependentCplusplusFlags -fPIC #endif #ifndef ExtraLoadFlags #ifdef UseInstalled XCOMM XXX Maybe superfluous. #define ExtraLoadFlags -Wl,-rpath-link=$(USRLIBDIRPATH) #else #define ExtraLoadFlags -Wl,-rpath-link=$(BUILDLIBDIR) #endif #endif /* * InstallSharedLibrary - generate rules to install the shared library. * NOTE: file must be executable, hence "INSTBINFLAGS" */ #ifndef InstallSharedLibrary #define InstallSharedLibrary(libname,rev,dest) @@\ install:: Concat(lib,libname.so.rev) @@\ MakeDir($(DESTDIR)dest) @@\ $(INSTALL) $(INSTALLFLAGS) $(INSTBINFLAGS) Concat(lib,libname.so.rev) $(DESTDIR)dest @@\ @T=`echo Concat($(DESTDIR)dest/lib,libname.so.rev) | sed 's/\.[^\.]*$$//'`;\ set -x; $(RM) $$T && $(LN) Concat(lib,libname.so.rev) $$T @@\ $(RM) Concat($(DESTDIR)dest/lib,libname.so) @@\ $(LN) Concat(lib,libname.so.rev) Concat($(DESTDIR)dest/lib,libname.so) #endif /* InstallSharedLibrary */ /* * InstallSharedLibraryData - generate rules to install the shared library data */ #ifndef InstallSharedLibraryData #define InstallSharedLibraryData(libname,rev,dest) #endif /* InstallSharedLibraryData */ /* * SharedLibraryTarget - generate rules to create a shared library; * build it into a different name so that we do not hose people by having * the library gone for long periods. */ #ifndef SharedLibraryTarget #ifdef UseInstalled #define LinkBuildSonameLibrary(lib) true #else #define LinkBuildSonameLibrary(lib) (RemoveFile($(BUILDLIBDIR)/lib); \ cd $(BUILDLIBDIR); $(LN) $(BUILDINCTOP)/$(CURRENT_DIR)/lib .) #endif #define SharedLibraryTarget(libname,rev,solist,down,up) @@\ AllTarget(Concat(lib,libname.so.rev)) @@\ @@\ Concat(lib,libname.so.rev): solist $(EXTRALIBRARYDEPS) @@\ $(RM) $@~ @@\ @SONAME=`echo $@ | sed 's/\.[^\.]*$$//'`; set -x; \ @@\ (cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\ $(RM) $$SONAME; $(LN) $@ $$SONAME; \ @@\ LinkBuildSonameLibrary($$SONAME) @@\ $(RM) $@ @@\ $(MV) $@~ $@ @@\ $(RM) Concat(lib,libname.so) @@\ $(LN) $@ Concat(lib,libname.so) @@\ LinkBuildLibrary($@) @@\ LinkBuildLibrary(Concat(lib,libname.so)) @@\ @@\ clean:: @@\ @MAJREV=`expr rev : '\(.*\)\.'`; \ @@\ set -x; $(RM) Concat(lib,libname.so.$$MAJREV) @@\ $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so) #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; */ #ifndef SharedLibraryDataTarget #define SharedLibraryDataTarget(libname,rev,salist) #endif /* SharedLibraryTarget */
/* * GNU Hurd shared library template * * $XFree86: xc/config/cf/gnuLib.tmpl,v 1.1.2.2 1998/12/22 12:27:32 hohndel Exp $ */ #ifndef FixupLibReferences #define FixupLibReferences() @@\ XMULIBONLY = -lXmu @@\ XMULIB = $(XMULIBONLY) $(XTOOLLIB) $(XLIB) #endif #ifndef XawClientLibs #define XawClientLibs $(XAWLIB) $(XMULIBONLY) $(XTOOLLIB) $(XLIB) #endif #define CplusplusLibC #define SharedX11Reqs #define SharedOldXReqs $(LDPRELIB) $(XLIBONLY) #define SharedXtReqs $(LDPRELIB) $(XLIBONLY) $(SMLIB) $(ICELIB) #define SharedXawReqs $(LDPRELIB) $(XMULIB) $(XTOOLLIB) $(XLIB) #define SharedXmuReqs $(LDPRELIB) $(XTOOLLIB) $(XLIB) #define SharedXextReqs $(LDPRELIB) $(XLIBONLY) #define SharedXiReqs $(LDPRELIB) $(XLIB) #define SharedPexReqs $(LDPRELIB) $(XLIBONLY) MathLibrary #define SharedXtstReqs $(LDPRELIB) $(XLIB) #define SharedXieReqs $(LDPRELIB) $(XLIBONLY) #define SharedSMReqs $(LDPRELIB) $(ICELIB)