Subject: kern/1199: kernel build dies if () in CFLAGS
To: None <gnats-admin@sun-lamp.pc.cs.cmu.edu>
From: Simon J. Gerraty <sjg@hobbit.dn.itg.telecom.com.au>
List: netbsd-bugs
Date: 07/06/1995 01:50:04
>Number:         1199
>Category:       kern
>Synopsis:       compile of lib{kern,compat} breaks if CFLAGS contains ().
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people (Kernel Bug People)
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Jul  6 01:50:03 1995
>Originator:     Simon J. Gerraty
>Organization:
	
>Release:        NetBSD-950627
>Environment:
	
System: NetBSD hobbit 1.0A NetBSD 1.0A (HOBBIT) #0: Thu Jul 6 15:59:00 EST 1995 root@hobbit:/usr/bsd_src/usr.src/sys/arch/sparc/compile/HOBBIT sparc


>Description:
	
The assignments *FLAGS="${CFLAGS}" results in a syntax error if CFLAGS contains
() inside quotes.
I broke it by having -DCHILD_MAX="(maxproc / 2)" in CFLAGS but other
cases could easily be contrived.
The above results in:

root:380# make 
making sure the kern library is up to date...
Syntax error: "(" unexpected (expecting ")")
*** Error code 2


>How-To-Repeat:
	
See above.

>Fix:
	
Given that several things in kernel config files put "" around options etc,
using 
*FLAGS='${CFLAGS}' seems prudent.
The following patch takes care of sys/lib/libkern and sys/compat/common


Index: sys/lib/libkern/Makefile.inc
===================================================================
RCS file: /prod/cvsroot/usr.src/sys/lib/libkern/Makefile.inc,v
retrieving revision 1.1.1.2
diff -c -b -r1.1.1.2 Makefile.inc
*** /tmp/T0a20702	Thu Jul  6 15:16:26 1995
--- Makefile.inc	Thu Jul  6 15:02:31 1995
***************
*** 13,19 ****
  	@echo making sure the kern library is up to date...
  	@(cd ${KERNDST} && ${MAKE} -f ${KERNREL}${KERNDIR}/Makefile \
  	  KERNCC="${CC}" \
! 	  KERNCFLAGS="${CFLAGS}" \
  	  KERNREL="${KERNREL}" \
  	  KERNDIR="${KERNDIR}" libkern.a)
  
--- 13,19 ----
  	@echo making sure the kern library is up to date...
  	@(cd ${KERNDST} && ${MAKE} -f ${KERNREL}${KERNDIR}/Makefile \
  	  KERNCC="${CC}" \
! 	  KERNCFLAGS='${CFLAGS}' \
  	  KERNREL="${KERNREL}" \
  	  KERNDIR="${KERNDIR}" libkern.a)
  
***************
*** 21,27 ****
  	@echo making sure the profiled kern library is up to date...
  	@(cd ${KERNDST} && ${MAKE} -f ${KERNREL}${KERNDIR}/Makefile \
  	  KERNCC="${CC}" \
! 	  KERNCFLAGS="${CFLAGS}" \
  	  KERNREL="${KERNREL}" \
  	  KERNDIR="${KERNDIR}" libkern_p.a)
  
--- 21,27 ----
  	@echo making sure the profiled kern library is up to date...
  	@(cd ${KERNDST} && ${MAKE} -f ${KERNREL}${KERNDIR}/Makefile \
  	  KERNCC="${CC}" \
! 	  KERNCFLAGS='${CFLAGS}' \
  	  KERNREL="${KERNREL}" \
  	  KERNDIR="${KERNDIR}" libkern_p.a)
  
***************
*** 29,35 ****
  	@echo cleaning the kern library objects
  	@(cd ${KERNDST} && ${MAKE} -f ${KERNREL}${KERNDIR}/Makefile \
  	  KERNCC="${CC}" \
! 	  KERNCFLAGS="${CFLAGS}" \
  	  KERNREL="${KERNREL}" \
  	  KERNDIR="${KERNDIR}" clean)
  
--- 29,35 ----
  	@echo cleaning the kern library objects
  	@(cd ${KERNDST} && ${MAKE} -f ${KERNREL}${KERNDIR}/Makefile \
  	  KERNCC="${CC}" \
! 	  KERNCFLAGS='${CFLAGS}' \
  	  KERNREL="${KERNREL}" \
  	  KERNDIR="${KERNDIR}" clean)
  
Index: sys/compat/common/Makefile.inc
===================================================================
RCS file: /prod/cvsroot/usr.src/sys/compat/common/Makefile.inc,v
retrieving revision 1.1.1.1
diff -c -b -r1.1.1.1 Makefile.inc
*** /tmp/T0a20706	Thu Jul  6 15:16:26 1995
--- Makefile.inc	Thu Jul  6 15:09:26 1995
***************
*** 13,19 ****
  	@echo making sure the compat library is up to date...
  	@(cd ${COMPATDST} && ${MAKE} -f ${COMPATREL}${COMPATDIR}/Makefile \
  	  COMPATCC="${CC}" \
! 	  COMPATCFLAGS="${CFLAGS}" \
  	  COMPATREL="${COMPATREL}" \
  	  COMPATDIR="${COMPATDIR}" libcompat.a)
  
--- 13,19 ----
  	@echo making sure the compat library is up to date...
  	@(cd ${COMPATDST} && ${MAKE} -f ${COMPATREL}${COMPATDIR}/Makefile \
  	  COMPATCC="${CC}" \
! 	  COMPATCFLAGS='${CFLAGS}' \
  	  COMPATREL="${COMPATREL}" \
  	  COMPATDIR="${COMPATDIR}" libcompat.a)
  
***************
*** 21,27 ****
  	@echo making sure the profiled compat library is up to date...
  	@(cd ${COMPATDST} && ${MAKE} -f ${COMPATREL}${COMPATDIR}/Makefile \
  	  COMPATCC="${CC}" \
! 	  COMPATCFLAGS="${CFLAGS}" \
  	  COMPATREL="${COMPATREL}" \
  	  COMPATDIR="${COMPATDIR}" libcompat_p.a)
  
--- 21,27 ----
  	@echo making sure the profiled compat library is up to date...
  	@(cd ${COMPATDST} && ${MAKE} -f ${COMPATREL}${COMPATDIR}/Makefile \
  	  COMPATCC="${CC}" \
! 	  COMPATCFLAGS='${CFLAGS}' \
  	  COMPATREL="${COMPATREL}" \
  	  COMPATDIR="${COMPATDIR}" libcompat_p.a)
  
***************
*** 29,35 ****
  	@echo cleaning the compat library objects
  	@(cd ${COMPATDST} && ${MAKE} -f ${COMPATREL}${COMPATDIR}/Makefile \
  	  COMPATCC="${CC}" \
! 	  COMPATCFLAGS="${CFLAGS}" \
  	  COMPATREL="${COMPATREL}" \
  	  COMPATDIR="${COMPATDIR}" clean)
  
--- 29,35 ----
  	@echo cleaning the compat library objects
  	@(cd ${COMPATDST} && ${MAKE} -f ${COMPATREL}${COMPATDIR}/Makefile \
  	  COMPATCC="${CC}" \
! 	  COMPATCFLAGS='${CFLAGS}' \
  	  COMPATREL="${COMPATREL}" \
  	  COMPATDIR="${COMPATDIR}" clean)
  
>Audit-Trail:
>Unformatted: