|
|
1.1.1.5 ! 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: 1.1.1.3 root 243: How to compile X11R5 (patch level 11) with GCC version 2: 1.1 root 244: 245: The patches include support for building the shared libraries with GCC 2 on 1.1.1.5 ! root 246: the Sparc and 68k machines. ! 247: ! 248: NOTE: Such shared libraries built with GCC version 2.3 DID NOT WORK 1.1.1.3 root 249: with executables previously linked using Sun CC! This is because 250: neither those executables nor the gcc-compiled shared libraries contain 1.1.1.5 ! root 251: libgcc.a. The shared libraries did work with executables linked using 1.1.1.3 root 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 1.1.1.5 ! root 254: to NOT build the shared libraries with gcc. 1.1.1.3 root 255: 1.1.1.5 ! root 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. 1.1 root 260: 1.1.1.2 root 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: 1.1 root 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: 1.1.1.3 root 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 1.1.1.2 root 274: -B/bin/ to the PositionIndependentCFlags. 1.1 root 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: 1.1.1.4 root 285: mit/clients/twm/Imakefile -- fix bad decls of malloc, realloc in gram.c. 286: 1.1 root 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 1.1.1.3 root 307: --- mit/config/sunLib.rules Tue May 5 12:26:12 1992 1.1 root 308: *************** 1.1.1.3 root 309: *** 23,30 **** 310: --- 23,34 ---- 1.1 root 311: #define SharedLibraryLoadFlags -assert pure-text 312: #endif 313: #ifndef PositionIndependentCFlags 1.1.1.3 root 314: + #if defined(HasGcc2) && defined (Gcc2BuildLibs) 1.1 root 315: + #define PositionIndependentCFlags -fpic 316: + #else 317: #define PositionIndependentCFlags -pic 318: #endif 1.1.1.3 root 319: + #endif 1.1 root 320: 321: /* 1.1.1.3 root 322: * InstallSharedLibrary - generate rules to install the shared library. 1.1 root 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: 1.1.1.3 root 334: --- 25,33 ---- 1.1 root 335: 336: #ifdef BeforeVendorCF 337: 338: ! #define HasGcc YES 339: ! #define HasGcc2 YES 1.1.1.3 root 340: ! /* #define Gcc2BuildLibs YES */ 1.1 root 341: 342: #endif /* BeforeVendorCF */ 343: 344: *** mit/config/sun.cf.ORIG Tue Dec 31 11:13:57 1991 1.1.1.3 root 345: --- mit/config/sun.cf Tue May 5 12:29:50 1992 1.1 root 346: *************** 347: *** 34,42 **** 1.1.1.3 root 348: --- 41,61 ---- 1.1 root 349: 350: #if HasGcc 351: 352: + #if defined(HasGcc2) 1.1.1.3 root 353: + #define OptimizedCDebugFlags -O2 354: + /* Leave Alone XXX */ 355: + #else 356: + #define OptimizedCDebugFlags -O 1.1 root 357: #define SharedLibraryCcCmd cc 358: #define ExtraLoadFlags -B/usr/bin/ 359: #define AllocateLocalDefines /**/ 360: + #endif 1.1.1.3 root 361: + 362: + #if !defined(Gcc2BuildLibs) 363: + #define SharedLibraryCcCmd cc 364: + #define ExtraLoadFlags -B/usr/bin/ 365: + #define AllocateLocalDefines /**/ 366: + #endif 1.1 root 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 1.1.1.4 root 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.