NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

bin/53213: make: inference rules: not all paths represented by "internal macros" gain realpath massage



>Number:         53213
>Category:       bin
>Synopsis:       make: inference rules: not all paths represented by "internal macros" gain realpath massage
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    bin-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Apr 25 19:05:00 +0000 2018
>Originator:     Steffen
>Release:        8.0 (+ portable bmake)
>Organization:
>Environment:
hunky dory
>Description:
bmake is the only make i know which fails to do the following.
Imagine configuration creates obj/ dir but continues to work from top level.
In the call

   if ${make} -f ${makefile} XINCS="${INCS} ${incs}" \
            CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" \
            XLIBS="${LIBS} ${libs}" ${tmp} &&

we have

  make=bmake makefile=obj/___tmp.mk tmp=obj/___tmp14286

___tmp.mk is

  ${cat} > ${makefile} << \!
  .SUFFIXES: .o .c .x .y
  .c.o:
     $(CC) -I./ $(XINCS) $(CFLAGS) -o $(@) -c $(<)
  .c.x:
     $(CC) -I./ $(XINCS) -E $(<) > $(@)
  .c:
     $(CC) -I./ $(XINCS) $(CFLAGS) $(LDFLAGS) -o $(@) $(<) $(XLIBS)
  !

We end up with (stripped)

  ***  . OS error mapping table generated ... 
  *** tests results
  *** make=bmake makefile=obj/___tmp.mk tmp=obj/___tmp14286
  tcc -I..... -o obj/___tmp14286 /home/steffen/src/nail.git/obj/___tmp14286.c -L....
  tcc: error: could not write 'obj/___tmp14286'
  *** Error code 1

The problem seems to be that bmake selfishly enters obj/ even though it has not been asked to do so, and whereas it creates an absolute version of/for $(<) it does not actually do the same for $(@), so the call fails because there is not obj/obj.




>How-To-Repeat:
If you want to you can clone my MUA, check out the [next] branch and also see

  #?2[steffen@essex nail.git]$ bmake devel
  sh: can't open 'make-config.sh': No such file or directory
  *** Error code 1

  Stop.

happening after the above error occurred, i do not yet know why.
>Fix:



Home | Main Index | Thread Index | Old Index