|
|
1.1 ! root 1: [This file contains two alternative recipes for compiling X11 with GCC. ! 2: The first alternative puts libgcc.a into the shared X library; the second ! 3: does not. Neither alternative works on all kinds of systems. ! 4: It may be that when using GCC 2.4, both alternatives work okay on ! 5: relatively recent Sparc systems. The first alternative is likely ! 6: not to work on a Sun 3 without hardware floating point.] ! 7: ! 8: How to compile X11R5 (patch level 11) with GCC version 2: ! 9: ! 10: The patches include support for building the shared libraries with GCC ! 11: 2 on the Sparc and 68k machines. This version includes the necessary ! 12: parts of libgcc.a in the shared library for X, in case functions in ! 13: that library need it. Thus the default behavior is now to build ! 14: everything, including the libraries, with gcc. ! 15: ! 16: If you build the shared library this way, it may not work with ! 17: executables made with older versions of GCC (2.3.3 and earlier). ! 18: If that happens, relink those executables with the latest GCC. ! 19: IF YOU THINK YOU MIGHT COMPILE X FOR SOLARIS 2, then you really don't ! 20: need this patch: get /contrib/R5.SunOS5.patch.tar.Z from ! 21: export.lcs.mit.edu instead. It has everything you need to do the ! 22: build for Solaris 2, sets you up to everything with GCC, and is ! 23: backward compatible with Sunos 4.*. Get the the README ! 24: (/contrib/R5.SunOS5.patch.README at export) for more info. ! 25: ! 26: If you see undefined symbols _dlopen, _dlsym, or _dlclose when linking ! 27: with -lX11, compile and link against the file mit/util/misc/dlsym.c in ! 28: the MIT X11R5 distribution. Alternatively, do dynamic linking ! 29: by using a non-GNU ld. ! 30: ! 31: mit/config/Imake.tmpl -- Do not set -fstrength-reduce if we have GCC 2. ! 32: If -fstrength-reduce (or any other -f option) is a major win, then it ! 33: will most likely be turned on by -O2 optimization. ! 34: ! 35: mit/config/sunLib.rules -- If HasGcc and GccVersion > 1 are true, then ! 36: use gcc -fpic to generate PIC code. Make sure that gcc does not use ! 37: gas (the GNU assembler) when compiling PIC code; gas does not assemble ! 38: it correctly. ! 39: ! 40: ***If you have gas installed where gcc uses it by default, you might have ! 41: to add -B/bin/ to the PositionIndependentCFlags.*** ! 42: ! 43: mit/config/site.def -- Define GccVersion to be 2. ! 44: ! 45: mit/config/sun.cf -- When compiling with GCC 2, use -O2 optimization. ! 46: ! 47: mit/config/sunLib.rules -- When compiling with GCC 2, use -fpic for ! 48: position independent code generation. ! 49: ! 50: mit/rgb/Imakefile -- No longer need to compile some modules with ! 51: cc on the Sparc since GCC 2 produces proper -fpcc-struct-return code. ! 52: ! 53: mit/server/os/Imakefile -- Likewise. ! 54: ! 55: mit/server/ddx/sun/Imakefile -- When compiling with GCC 2, some modules ! 56: should be compiled with -fvolatile. ! 57: ! 58: mit/clients/twm/Imakefile -- Fix bad decls of malloc, realloc in gram.c. ! 59: ! 60: mit/lib/X/Imakefile -- Make libgcc.a a required lib for libX11.so ! 61: ! 62: *** mit/clients/twm/Imakefile Mon May 17 22:05:22 1993 ! 63: --- new/clients/twm/Imakefile Mon May 17 22:28:46 1993 ! 64: *************** ! 65: *** 32,41 **** ! 66: --- 32,48 ---- ! 67: ComplexProgramTarget(twm) ! 68: InstallNonExecFile(system.twmrc,$(TWMDIR)) ! 69: ! 70: + #if HasGcc && GccVersion > 1 && defined (SunArchitecture) ! 71: gram.h gram.c: gram.y ! 72: yacc $(YFLAGS) gram.y ! 73: + sed -e 's/^extern char \*malloc(), \*realloc();//g' y.tab.c >gram.c ! 74: + $(MV) y.tab.h gram.h ! 75: + #else ! 76: + gram.h gram.c: gram.y ! 77: + yacc $(YFLAGS) gram.y ! 78: $(MV) y.tab.c gram.c ! 79: $(MV) y.tab.h gram.h ! 80: + #endif ! 81: ! 82: clean:: ! 83: $(RM) y.tab.h y.tab.c lex.yy.c gram.h gram.c lex.c deftwmrc.c ! 84: *** mit/config/Imake.tmpl Mon May 17 22:02:57 1993 ! 85: --- new/config/Imake.tmpl Mon May 17 22:15:06 1993 ! 86: *************** ! 87: *** 500,506 **** ! 88: --- 500,510 ---- ! 89: #endif ! 90: #ifndef CcCmd ! 91: #if HasGcc ! 92: + #if GccVersion > 1 ! 93: + #define CcCmd gcc -fpcc-struct-return ! 94: + #else ! 95: #define CcCmd gcc -fstrength-reduce -fpcc-struct-return ! 96: + #endif ! 97: #else ! 98: #define CcCmd cc ! 99: #endif ! 100: *** mit/config/site.def Mon May 17 22:02:44 1993 ! 101: --- new/config/site.def Mon May 17 22:22:28 1993 ! 102: *************** ! 103: *** 25,31 **** ! 104: ! 105: #ifdef BeforeVendorCF ! 106: ! 107: ! /* #define HasGcc YES */ ! 108: ! 109: #endif /* BeforeVendorCF */ ! 110: ! 111: --- 25,33 ---- ! 112: ! 113: #ifdef BeforeVendorCF ! 114: ! 115: ! #define HasGcc YES ! 116: ! /* GccVersion > 1 implies building shared libraries with gcc */ ! 117: ! #define GccVersion 2 ! 118: ! 119: #endif /* BeforeVendorCF */ ! 120: ! 121: *** mit/config/sun.cf Mon May 17 22:03:02 1993 ! 122: --- new/config/sun.cf Mon May 17 22:24:55 1993 ! 123: *************** ! 124: *** 41,49 **** ! 125: --- 41,55 ---- ! 126: ! 127: #if HasGcc ! 128: ! 129: + #if GccVersion > 1 ! 130: + #define OptimizedCDebugFlags -O2 ! 131: + #else ! 132: + #define OptimizedCDebugFlags -O ! 133: #define SharedLibraryCcCmd cc ! 134: #define ExtraLoadFlags -B/usr/bin/ ! 135: #define AllocateLocalDefines /**/ ! 136: + #endif ! 137: + ! 138: ! 139: .c.o: ! 140: $(CC) -c $(CFLAGS) $*.c ! 141: *** mit/config/sunLib.rules Mon May 17 22:02:46 1993 ! 142: --- new/config/sunLib.rules Mon May 17 22:19:06 1993 ! 143: *************** ! 144: *** 23,29 **** ! 145: --- 23,33 ---- ! 146: #define SharedLibraryLoadFlags -assert pure-text ! 147: #endif ! 148: #ifndef PositionIndependentCFlags ! 149: + #if defined(HasGcc) && GccVersion > 1 ! 150: + #define PositionIndependentCFlags -fpic ! 151: + #else ! 152: #define PositionIndependentCFlags -pic ! 153: + #endif ! 154: #endif ! 155: ! 156: /* ! 157: *** mit/lib/X/Imakefile Mon May 17 22:05:03 1993 ! 158: --- new/lib/X/Imakefile Mon May 17 22:32:26 1993 ! 159: *************** ! 160: *** 9,14 **** ! 161: --- 9,31 ---- ! 162: #define MotifBC NO ! 163: #endif ! 164: ! 165: + #if defined(SunArchitecture) ! 166: + #if SystemV4 ! 167: + #if HasGcc ! 168: + REQUIREDLIBS= -lgcc -lc ! 169: + #else ! 170: + REQUIREDLIBS= -lc ! 171: + #endif ! 172: + #else ! 173: + #if HasGcc && GccVersion > 1 ! 174: + XCOMM Hack to fix gcc 2 ``-nostdlib'' deficiency on SunOS 4.x ! 175: + REQUIREDLIBS= `gcc -v 2>&1 | awk '{print $$4}' | sed -e 's/specs$$/libgcc.a/'` ! 176: + #else ! 177: + REQUIREDLIBS= ! 178: + #endif ! 179: + #endif ! 180: + #endif ! 181: + ! 182: #ifndef BuildXimp ! 183: #define BuildXimp NO ! 184: #endif ! 185: *** mit/rgb/Imakefile Mon May 17 22:05:31 1993 ! 186: --- new/rgb/Imakefile Mon May 17 22:25:30 1993 ! 187: *************** ! 188: *** 17,23 **** ! 189: #if !(defined(SGIArchitecture) || SystemV4) ! 190: DBMLIB = -ldbm ! 191: #endif ! 192: ! #if defined(SparcArchitecture) && HasGcc ! 193: CC = cc ! 194: CCOPTIONS = /**/ ! 195: EXTRA_LOAD_FLAGS = /**/ ! 196: --- 17,23 ---- ! 197: #if !(defined(SGIArchitecture) || SystemV4) ! 198: DBMLIB = -ldbm ! 199: #endif ! 200: ! #if defined(SparcArchitecture) && HasGcc && GccVersion <= 1 ! 201: CC = cc ! 202: CCOPTIONS = /**/ ! 203: EXTRA_LOAD_FLAGS = /**/ ! 204: *** mit/server/ddx/sun/Imakefile Mon May 17 22:05:57 1993 ! 205: --- new/server/ddx/sun/Imakefile Mon May 17 22:27:23 1993 ! 206: *************** ! 207: *** 43,48 **** ! 208: --- 43,53 ---- ! 209: LinkFile(sunGX.o,sunGX.o.dist) ! 210: #endif ! 211: ! 212: + #if HasGcc && GccVersion > 1 ! 213: + SpecialObjectRule(sunCG2C.o,sunCG2C.c,-fvolatile) ! 214: + SpecialObjectRule(sunCG2M.o,sunCG2M.c,-fvolatile) ! 215: + #endif ! 216: + ! 217: sunInitExtMono.o: $(ICONFIGFILES) ! 218: ObjectFromSpecialSource(sunInitExtMono,../mi/miinitext,-UPEXEXT) ! 219: ObjectFromSpecialSource(sunInitMono,sunInit,-DMONO_ONLY) ! 220: *** mit/server/os/Imakefile Mon May 17 22:05:46 1993 ! 221: --- new/server/os/Imakefile Mon May 17 22:26:02 1993 ! 222: *************** ! 223: *** 132,138 **** ! 224: SpecialObjectRule(osinit.o,$(ICONFIGFILES),$(ADM_DEFINES)) ! 225: SpecialObjectRule(WaitFor.o,$(ICONFIGFILES),$(EXT_DEFINES)) ! 226: SpecialObjectRule(fonttype.o,$(ICONFIGFILES),$(FONT_DEFINES)) ! 227: ! #if defined(SparcArchitecture) && HasGcc ! 228: oscolor.o: $(ICONFIGFILES) ! 229: $(RM) $@ ! 230: cc -c $(DBM_DEFINES) $(CDEBUGFLAGS) $(ALLDEFINES) $*.c ! 231: --- 132,138 ---- ! 232: SpecialObjectRule(osinit.o,$(ICONFIGFILES),$(ADM_DEFINES)) ! 233: SpecialObjectRule(WaitFor.o,$(ICONFIGFILES),$(EXT_DEFINES)) ! 234: SpecialObjectRule(fonttype.o,$(ICONFIGFILES),$(FONT_DEFINES)) ! 235: ! #if defined(SparcArchitecture) && HasGcc && GccVersion <= 1 ! 236: oscolor.o: $(ICONFIGFILES) ! 237: $(RM) $@ ! 238: cc -c $(DBM_DEFINES) $(CDEBUGFLAGS) $(ALLDEFINES) $*.c ! 239: ! 240: ! 241: [This is the older version] ! 242: ! 243: How to compile X11R5 (patch level 11) with GCC version 2: ! 244: ! 245: The patches include support for building the shared libraries with GCC 2 on ! 246: the Sparc and 68k machines. ! 247: ! 248: NOTE: Such shared libraries built with GCC version 2.3 DID NOT WORK ! 249: with executables previously linked using Sun CC! This is because ! 250: neither those executables nor the gcc-compiled shared libraries contain ! 251: libgcc.a. The shared libraries did work with executables linked using ! 252: GCC (running the Sun linker, of course) because GCC tells the linker to ! 253: link in libgcc.a. Because of these limitations the default behavior is ! 254: to NOT build the shared libraries with gcc. ! 255: ! 256: Changes in GCC 2.4 seem to have eliminated the problem, and such a ! 257: shared library now seems work with all executables. If you want the ! 258: gcc-compiled shared libraries turn on "Gcc2BuildLibs" in site.def. If ! 259: you try this, please tell [email protected] whether it works. ! 260: ! 261: Sun forgot to include a static version of libdl.a with some versions ! 262: of SunOS (4.1 mainly). If you see undefined symbols _dlopen, _dlsym, ! 263: or _dlclose when linking with -lX11, compile and link against the file ! 264: mit/util/misc/dlsym.c in the MIT X11R5 distribution. ! 265: ! 266: mit/config/Imake.tmpl -- Do not set -fstrength-reduce if we have GCC 2. If ! 267: -fstrength-reduce (or any other -f option) is a major win, then it will ! 268: most likely be turned on by -O2 optimization. ! 269: ! 270: mit/config/sunLib.rules -- If HasGcc2 and Gcc2BuildLibs are defined, then ! 271: use gcc -fpic to generate PIC code. Make sure that gcc does not use gas (the ! 272: GNU assembler) when compiling PIC code; gas does not assemble it correctly. ! 273: If you have gas installed where gcc uses it by default, you might have to add ! 274: -B/bin/ to the PositionIndependentCFlags. ! 275: ! 276: mit/config/site.def -- Define HasGcc2 to be YES. ! 277: ! 278: mit/config/sun.cf -- When compiling with GCC 2, use -O2 optimization. ! 279: ! 280: mit/rgb/Imakefile -- No longer need to compile some modules with ! 281: cc on the Sparc since GCC 2 produces proper -fpcc-struct-return code. ! 282: ! 283: mit/server/os/Imakefile -- Likewise. ! 284: ! 285: mit/clients/twm/Imakefile -- fix bad decls of malloc, realloc in gram.c. ! 286: ! 287: *** mit/config/Imake.tmpl.ORIG Tue Dec 31 11:07:56 1991 ! 288: --- mit/config/Imake.tmpl Tue Dec 31 12:30:47 1991 ! 289: *************** ! 290: *** 499,508 **** ! 291: --- 499,512 ---- ! 292: #define HasGcc NO ! 293: #endif ! 294: #ifndef CcCmd ! 295: + #if HasGcc2 ! 296: + #define CcCmd gcc -fpcc-struct-return ! 297: + #else ! 298: #if HasGcc ! 299: #define CcCmd gcc -fstrength-reduce -fpcc-struct-return ! 300: #else ! 301: #define CcCmd cc ! 302: + #endif ! 303: #endif ! 304: #endif ! 305: #if HasFortran ! 306: *** mit/config/sunLib.rules.ORIG Tue Dec 31 11:11:24 1991 ! 307: --- mit/config/sunLib.rules Tue May 5 12:26:12 1992 ! 308: *************** ! 309: *** 23,30 **** ! 310: --- 23,34 ---- ! 311: #define SharedLibraryLoadFlags -assert pure-text ! 312: #endif ! 313: #ifndef PositionIndependentCFlags ! 314: + #if defined(HasGcc2) && defined (Gcc2BuildLibs) ! 315: + #define PositionIndependentCFlags -fpic ! 316: + #else ! 317: #define PositionIndependentCFlags -pic ! 318: #endif ! 319: + #endif ! 320: ! 321: /* ! 322: * InstallSharedLibrary - generate rules to install the shared library. ! 323: *** mit/config/site.def.ORIG Tue Dec 31 11:13:49 1991 ! 324: --- mit/config/site.def Tue Dec 31 12:02:59 1991 ! 325: *************** ! 326: *** 25,31 **** ! 327: ! 328: #ifdef BeforeVendorCF ! 329: ! 330: ! /* #define HasGcc YES */ ! 331: ! 332: #endif /* BeforeVendorCF */ ! 333: ! 334: --- 25,33 ---- ! 335: ! 336: #ifdef BeforeVendorCF ! 337: ! 338: ! #define HasGcc YES ! 339: ! #define HasGcc2 YES ! 340: ! /* #define Gcc2BuildLibs YES */ ! 341: ! 342: #endif /* BeforeVendorCF */ ! 343: ! 344: *** mit/config/sun.cf.ORIG Tue Dec 31 11:13:57 1991 ! 345: --- mit/config/sun.cf Tue May 5 12:29:50 1992 ! 346: *************** ! 347: *** 34,42 **** ! 348: --- 41,61 ---- ! 349: ! 350: #if HasGcc ! 351: ! 352: + #if defined(HasGcc2) ! 353: + #define OptimizedCDebugFlags -O2 ! 354: + /* Leave Alone XXX */ ! 355: + #else ! 356: + #define OptimizedCDebugFlags -O ! 357: #define SharedLibraryCcCmd cc ! 358: #define ExtraLoadFlags -B/usr/bin/ ! 359: #define AllocateLocalDefines /**/ ! 360: + #endif ! 361: + ! 362: + #if !defined(Gcc2BuildLibs) ! 363: + #define SharedLibraryCcCmd cc ! 364: + #define ExtraLoadFlags -B/usr/bin/ ! 365: + #define AllocateLocalDefines /**/ ! 366: + #endif ! 367: ! 368: .c.o: ! 369: $(CC) -c $(CFLAGS) $*.c ! 370: *** mit/rgb/Imakefile.ORIG Wed Jan 15 16:43:18 1992 ! 371: --- mit/rgb/Imakefile Thu Jan 2 13:34:09 1992 ! 372: *************** ! 373: *** 17,23 **** ! 374: #if !(defined(SGIArchitecture) || SystemV4) ! 375: DBMLIB = -ldbm ! 376: #endif ! 377: ! #if defined(SparcArchitecture) && HasGcc ! 378: CC = cc ! 379: CCOPTIONS = /**/ ! 380: EXTRA_LOAD_FLAGS = /**/ ! 381: --- 17,23 ---- ! 382: #if !(defined(SGIArchitecture) || SystemV4) ! 383: DBMLIB = -ldbm ! 384: #endif ! 385: ! #if defined(SparcArchitecture) && HasGcc && !defined(HasGcc2) ! 386: CC = cc ! 387: CCOPTIONS = /**/ ! 388: EXTRA_LOAD_FLAGS = /**/ ! 389: *** mit/server/os/Imakefile.ORIG Wed Jan 15 16:46:23 1992 ! 390: --- mit/server/os/Imakefile Wed Jan 15 16:46:48 1992 ! 391: *************** ! 392: *** 132,138 **** ! 393: SpecialObjectRule(osinit.o,$(ICONFIGFILES),$(ADM_DEFINES)) ! 394: SpecialObjectRule(WaitFor.o,$(ICONFIGFILES),$(EXT_DEFINES)) ! 395: SpecialObjectRule(fonttype.o,$(ICONFIGFILES),$(FONT_DEFINES)) ! 396: ! #if defined(SparcArchitecture) && HasGcc ! 397: oscolor.o: $(ICONFIGFILES) ! 398: $(RM) $@ ! 399: cc -c $(DBM_DEFINES) $(CDEBUGFLAGS) $(ALLDEFINES) $*.c ! 400: --- 132,138 ---- ! 401: SpecialObjectRule(osinit.o,$(ICONFIGFILES),$(ADM_DEFINES)) ! 402: SpecialObjectRule(WaitFor.o,$(ICONFIGFILES),$(EXT_DEFINES)) ! 403: SpecialObjectRule(fonttype.o,$(ICONFIGFILES),$(FONT_DEFINES)) ! 404: ! #if defined(SparcArchitecture) && HasGcc && !defined(HasGcc2) ! 405: oscolor.o: $(ICONFIGFILES) ! 406: $(RM) $@ ! 407: cc -c $(DBM_DEFINES) $(CDEBUGFLAGS) $(ALLDEFINES) $*.c ! 408: *** 1.1 1992/09/08 19:52:07 ! 409: --- mit/server/ddx/sun/Imakefile 1992/09/08 21:10:22 ! 410: *************** ! 411: *** 43,48 **** ! 412: --- 43,53 ---- ! 413: LinkFile(sunGX.o,sunGX.o.dist) ! 414: #endif ! 415: ! 416: + #if HasGcc2 ! 417: + SpecialObjectRule(sunCG2C.o,sunCG2C.c,-fvolatile) ! 418: + SpecialObjectRule(sunCG2M.o,sunCG2M.c,-fvolatile) ! 419: + #endif ! 420: + ! 421: sunInitExtMono.o: $(ICONFIGFILES) ! 422: ObjectFromSpecialSource(sunInitExtMono,../mi/miinitext,-UPEXEXT) ! 423: ObjectFromSpecialSource(sunInitMono,sunInit,-DMONO_ONLY) ! 424: ! 425: *** /tmp/RCSAa24446 Tue Sep 15 12:23:32 1992 ! 426: --- mit/clients/twm/Imakefile Thu Aug 13 18:18:07 1992 ! 427: *************** ! 428: *** 32,41 **** ! 429: --- 32,48 ---- ! 430: ComplexProgramTarget(twm) ! 431: InstallNonExecFile(system.twmrc,$(TWMDIR)) ! 432: ! 433: + #if HasGcc2 && defined (SunArchitecture) ! 434: gram.h gram.c: gram.y ! 435: yacc $(YFLAGS) gram.y ! 436: + sed -e 's/^extern char \*malloc(), \*realloc();//g' y.tab.c >gram.c ! 437: + $(MV) y.tab.h gram.h ! 438: + #else ! 439: + gram.h gram.c: gram.y ! 440: + yacc $(YFLAGS) gram.y ! 441: $(MV) y.tab.c gram.c ! 442: $(MV) y.tab.h gram.h ! 443: + #endif ! 444: ! 445: clean:: ! 446: $(RM) y.tab.h y.tab.c lex.yy.c gram.h gram.c lex.c deftwmrc.c ! 447:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.