Re: Several Darwin quartz objects not being built when using GNU make-3.81+.

Marc Aurele La France <[email protected]>
Newsgroups gmane.comp.xfree86.devel
Message-ID <Pine.WNT.4.64.0704151243360.1068@tsi>
On Wed, 11 Apr 2007, SciFi wrote:

> 6.  Several Darwin quartz objects not being built when using GNU
> make-3.81+.

> Build Log snip:

>>>>>
> [...]  -Wall -UNEED_SCREEN_REGIONS     -I. -I../../../../../programs/Xserver/fb -I../../../../../programs/Xserver/mi -I../../../../../programs/Xserver/include            -I../../../../../programs/Xserver/render -I../../../../../programs/Xserver/miext/shadow            -I../../../../../programs/Xserver/Xext -I.. -I../../../../../lib/apple  -I../../../../../exports/include    -D__powerpc__ -D__DARWIN__                                 -DNO_ALLOCA -DCSRG_BASED  -DSHAPE -DXINPUT -DXKB -DLBX -DXAPPGROUP 	-DXCSECURITY -DXSYNC -DXF86BIGFONT 	 -DBIGREQS -DPANORAMIX -DRENDER -DRANDR 	-DRES  -DPIXPRIV 	  		      -DNDEBUG  		       -DAVOID_GLYPHBLT -DPIXPRIV -DSINGLEDEPTH 				 -DXFree86Server 				-DSMART_SCHEDULE 				-DBUILDDEBUG 				-DX_BYTE_ORDER=X_BIG_ENDIAN      -DXBINDIR=/usr/X11R6/bin -DXINITDIR=/usr/X11R6/lib/X11/xinit           -DHAS_CG_MACH_PORT -DROOTLESSDEBUG -DBUILD_XPR -DHAS_KL_API   
 pseudoramiX.c
> rm -f libXQuartz.a
> ar clq libXQuartz.a Preferences.o         XApplication.o         XServer.o         applewm.o         keysym2ucs.o         quartz.o         quartzAudio.o         quartzCocoa.o         quartzPasteboard.o         quartzKeyboard.o         quartzStartup.o         pseudoramiX.o
> ar: Preferences.o: No such file or directory
> ar: XApplication.o: No such file or directory
> ar: XServer.o: No such file or directory
> ar: quartzCocoa.o: No such file or directory
> make[6]: *** [libXQuartz.a] Error 1
> make[6]: Leaving directory `/Volumes/Biggie/test/xf86_cvs/build/programs/Xserver/hw/darwin/quartz'
> [...]
> <<<<

> ...and at least the cr/ subdir under quartz/ is doing similar, too.

> There is nothing in the log that shows these objects were built at
> all, period.

> To recreate:

> a)  Build and install GNU make-3.81 release or from cvs/svn.
> Be sure to adjust $PATH etc. properly if needed.
> I'm presently using:
> $ make --version
> GNU Make 3.81.90
> [...]
> This program built for powerpc-apple-darwin8.9.0

> b)  Build xf86 with latest XCode (Apple-provided gcc, ld, etc.).

> c)  Possibly related env-vars:
> export MACOSX_DEPLOYMENT_TARGET="10.4"
> export SDKROOT="/Developer/SDKs/MacOSX10.4u.sdk"
> export SDK="${SDKROOT}"
> ...and maybe others...

> $ gcc --version
> powerpc-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5367)
> [...]

> $ uname -a
> Darwin <hostname> 8.9.0 Darwin Kernel Version 8.9.0: Thu Feb 22 20:54:07 PST 2007; root:xnu-792.17.14~1/RELEASE_PPC Power Macintosh powerpc PowerMac7,3 Darwin

> (OSX 10.4.9 running on a Dual G5 2.7GHz with 3.5GB of matched-pair
> SDRAM and more...)

> Discussion:

> GNU-make versions starting with 3.81 (and still in CVS as I write
> this) do not see the rules for building .m files (Objective-C for
> MacOSX).  This actually occurs on many different projects around
> the world (I first noticed on MPlayer).  I don't know how to fix
> this in Makefiles; I don't see any indication that the make-devel
> list or their bugtracker even know about this problem, so I
> surmise we're not doing something right with the vastly revamped
> GNU-make versions.  One must use Apple's provided gnumake (3.80)
> to compile these modules.  So when using make-3.81+ and the build
> stops as above, I do this:
> $ cd [build/]programs/Xserver/hw/darwin/quartz
> $ gnumake
> $ cd [build/]programs/Xserver/hw/darwin/quartz/cr
> $ gnumake
> ... then cd back to the [build] dir and continue with using GNU
> make-3.81+ (which is named 'make', lives in /usr/local/bin, and
> $PATH hits it first).

Does the patch below help?

*** cvs/xc/config/cf/Imake.tmpl	Sun Apr  1 18:33:28 2007
--- devel/xc/config/cf/Imake.tmpl	Sat Apr 14 23:40:09 2007
*************** XCOMM common rules for all Makefiles - d
*** 2255,2260 ****
--- 2255,2265 ----
   .cc.s:
   	CompileCplusplusToAsm($(_NOOP_))

+ .SUFFIXES: .m
+
+ .m.o:
+ 	$(CC) -c $(CFLAGS) -o $@ $<
+
   /*
    * These need to be here so that rules in Imakefile occur first;  the blank
    * emptyrule is to make sure that an empty Imakefile does not default to make

Thanks.

Marc.

+----------------------------------+----------------------------------+
|  Marc Aurele La France           |  work:   1-780-492-9310          |
|  Academic Information and        |  fax:    1-780-492-1729          |
|    Communications Technologies   |  email:  [email protected]         |
|  352 General Services Building   +----------------------------------+
|  University of Alberta           |                                  |
|  Edmonton, Alberta               |    Standard disclaimers apply    |
|  T6G 2H1                         |                                  |
|  CANADA                          |                                  |
+----------------------------------+----------------------------------+
XFree86 developer and VP.  ATI driver and X server internals.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.