Re: trunk and FreeBSD 10.1
There is also the magic that configure does at well, in altering the directives (#ifdef - .ifdef, for example). I think what I'll do is, if running under *BSD, see not only if 'make' itself is really GNUmake, but also check for 'gmake' and, if it exists, disable BSD makefiles.
Re: trunk and FreeBSD 10.1
Thx for the confirmation and the assessment. I'll have to look at how svn does it. On Apr 24, 2015, at 6:34 AM, Stefan Sperling s...@apache.org wrote: On Thu, Apr 23, 2015 at 12:28:33PM -0400, Jim Jagielski wrote: I tried that, but gmake totally barfed... I have the same issue on OpenBSD. I think the GNU-BSD Makefile style transformation implemented by build/bsd_makefile is too simplistic. All it does it putting a dot in front of include statements: include - .include It doesn't seem to handle other differences between GNU make and BSD make. Cases such as CC_FOR_BUILD being set to an empty string: build/config_vars.mk:CC_FOR_BUILD = and then checked with ifdef and used if defined: server/Makefile.in:ifdef CC_FOR_BUILD server/Makefile.in: $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -DCROSS_COMPILE -o $ @ $ It's defined, but empty, so that's where the build failure comes from. I can only build httpd trunk on OpenBSD by first disabling the BSD Makefile transformation logic and then using gmake: ./configure --disable-bsd-makefiles gmake (Also make sure to revert any local .mk changes created by prior runs of the bsd_makefile script -- they upset gmake.) I don't think the current approach is a good one. Either write portable Makefiles, or decide on one particular implementation of make. The middle ground will tend to break down every now and then. Also, on BSD the local changes to .mk files in the working copy get in the way of 'svn diff' and 'svn commit'. In the SVN project we write portable Makefiles which work with either implementation. This has been working out quite well. On Apr 23, 2015, at 12:07 PM, Jeff Trawick traw...@gmail.com wrote: On 04/23/2015 11:59 AM, Jim Jagielski wrote: Hmmm... I am seeing some strangeness trying to get trunk to build on FreeBSD 10.1... I get to ./server/ and then the build dies w/ try gmake? IIRC I had noticed that some BSD make compatibility was lost at some point... -DCROSS_COMPILE -o gen_test_char make[2]: exec(-DCROSS_COMPILE) failed (No such file or directory) *** Error code 1 It looks like the Makefile.in-Makefile process is causing issues. This is what I get in the Makefile: .include $(top_builddir)/build/rules.mk .include $(top_srcdir)/build/library.mk .ifdef CC_FOR_BUILD gen_test_char: gen_test_char.c $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -DCROSS_COMPILE -o $@ $ .else gen_test_char_OBJECTS = gen_test_char.lo gen_test_char: $(gen_test_char_OBJECTS) $(LINK) $(EXTRA_LDFLAGS) $(gen_test_char_OBJECTS) $(EXTRA_LIBS) .endif So we can see where the error is... those shell vars aren't defined/found. But why?
Re: trunk and FreeBSD 10.1
On Thu, Apr 23, 2015 at 12:28:33PM -0400, Jim Jagielski wrote: I tried that, but gmake totally barfed... I have the same issue on OpenBSD. I think the GNU-BSD Makefile style transformation implemented by build/bsd_makefile is too simplistic. All it does it putting a dot in front of include statements: include - .include It doesn't seem to handle other differences between GNU make and BSD make. Cases such as CC_FOR_BUILD being set to an empty string: build/config_vars.mk:CC_FOR_BUILD = and then checked with ifdef and used if defined: server/Makefile.in:ifdef CC_FOR_BUILD server/Makefile.in: $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -DCROSS_COMPILE -o $ @ $ It's defined, but empty, so that's where the build failure comes from. I can only build httpd trunk on OpenBSD by first disabling the BSD Makefile transformation logic and then using gmake: ./configure --disable-bsd-makefiles gmake (Also make sure to revert any local .mk changes created by prior runs of the bsd_makefile script -- they upset gmake.) I don't think the current approach is a good one. Either write portable Makefiles, or decide on one particular implementation of make. The middle ground will tend to break down every now and then. Also, on BSD the local changes to .mk files in the working copy get in the way of 'svn diff' and 'svn commit'. In the SVN project we write portable Makefiles which work with either implementation. This has been working out quite well. On Apr 23, 2015, at 12:07 PM, Jeff Trawick traw...@gmail.com wrote: On 04/23/2015 11:59 AM, Jim Jagielski wrote: Hmmm... I am seeing some strangeness trying to get trunk to build on FreeBSD 10.1... I get to ./server/ and then the build dies w/ try gmake? IIRC I had noticed that some BSD make compatibility was lost at some point... -DCROSS_COMPILE -o gen_test_char make[2]: exec(-DCROSS_COMPILE) failed (No such file or directory) *** Error code 1 It looks like the Makefile.in-Makefile process is causing issues. This is what I get in the Makefile: .include $(top_builddir)/build/rules.mk .include $(top_srcdir)/build/library.mk .ifdef CC_FOR_BUILD gen_test_char: gen_test_char.c $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -DCROSS_COMPILE -o $@ $ .else gen_test_char_OBJECTS = gen_test_char.lo gen_test_char: $(gen_test_char_OBJECTS) $(LINK) $(EXTRA_LDFLAGS) $(gen_test_char_OBJECTS) $(EXTRA_LIBS) .endif So we can see where the error is... those shell vars aren't defined/found. But why?
Re: trunk and FreeBSD 10.1
On Fri, Apr 24, 2015 at 07:20:01AM -0400, Jim Jagielski wrote: There is also the magic that configure does at well, in altering the directives (#ifdef - .ifdef, for example). I think what I'll do is, if running under *BSD, see not only if 'make' itself is really GNUmake, but also check for 'gmake' and, if it exists, disable BSD makefiles. Or perhaps declare BSD make as unsupported and require GNU make. That's the easiest short-term solution in my opinion. The existing BSD make support doesn't work anyway and making it work is a larger effort.
trunk and FreeBSD 10.1
Hmmm... I am seeing some strangeness trying to get trunk to build on FreeBSD 10.1... I get to ./server/ and then the build dies w/ -DCROSS_COMPILE -o gen_test_char make[2]: exec(-DCROSS_COMPILE) failed (No such file or directory) *** Error code 1 It looks like the Makefile.in-Makefile process is causing issues. This is what I get in the Makefile: .include $(top_builddir)/build/rules.mk .include $(top_srcdir)/build/library.mk .ifdef CC_FOR_BUILD gen_test_char: gen_test_char.c $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -DCROSS_COMPILE -o $@ $ .else gen_test_char_OBJECTS = gen_test_char.lo gen_test_char: $(gen_test_char_OBJECTS) $(LINK) $(EXTRA_LDFLAGS) $(gen_test_char_OBJECTS) $(EXTRA_LIBS) .endif So we can see where the error is... those shell vars aren't defined/found. But why?
Re: trunk and FreeBSD 10.1
On 04/23/2015 11:59 AM, Jim Jagielski wrote: Hmmm... I am seeing some strangeness trying to get trunk to build on FreeBSD 10.1... I get to ./server/ and then the build dies w/ try gmake? IIRC I had noticed that some BSD make compatibility was lost at some point... -DCROSS_COMPILE -o gen_test_char make[2]: exec(-DCROSS_COMPILE) failed (No such file or directory) *** Error code 1 It looks like the Makefile.in-Makefile process is causing issues. This is what I get in the Makefile: .include $(top_builddir)/build/rules.mk .include $(top_srcdir)/build/library.mk .ifdef CC_FOR_BUILD gen_test_char: gen_test_char.c $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -DCROSS_COMPILE -o $@ $ .else gen_test_char_OBJECTS = gen_test_char.lo gen_test_char: $(gen_test_char_OBJECTS) $(LINK) $(EXTRA_LDFLAGS) $(gen_test_char_OBJECTS) $(EXTRA_LIBS) .endif So we can see where the error is... those shell vars aren't defined/found. But why?
Re: trunk and FreeBSD 10.1
I tried that, but gmake totally barfed... On Apr 23, 2015, at 12:07 PM, Jeff Trawick traw...@gmail.com wrote: On 04/23/2015 11:59 AM, Jim Jagielski wrote: Hmmm... I am seeing some strangeness trying to get trunk to build on FreeBSD 10.1... I get to ./server/ and then the build dies w/ try gmake? IIRC I had noticed that some BSD make compatibility was lost at some point... -DCROSS_COMPILE -o gen_test_char make[2]: exec(-DCROSS_COMPILE) failed (No such file or directory) *** Error code 1 It looks like the Makefile.in-Makefile process is causing issues. This is what I get in the Makefile: .include $(top_builddir)/build/rules.mk .include $(top_srcdir)/build/library.mk .ifdef CC_FOR_BUILD gen_test_char: gen_test_char.c $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -DCROSS_COMPILE -o $@ $ .else gen_test_char_OBJECTS = gen_test_char.lo gen_test_char: $(gen_test_char_OBJECTS) $(LINK) $(EXTRA_LDFLAGS) $(gen_test_char_OBJECTS) $(EXTRA_LIBS) .endif So we can see where the error is... those shell vars aren't defined/found. But why?