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?
> > 

Reply via email to