Author: bdrewery
Date: Mon Apr 18 18:13:58 2016
New Revision: 298218
URL: https://svnweb.freebsd.org/changeset/base/298218

Log:
  Follow-up r297842: Rework header generation to fix always rebuilding.
  
  This reworks the handling of common headers to just include the needed
  logic rather than invoke MAKE.  This avoids the problem listed in r297842
  and avoids other dependency tracking issues.
  
  Pointyhat to: bdrewery
  Reported by:  Nikolai Lifanov <lifa...@mail.lifanov.com>
  Sponsored by: EMC / Isilon Storage Division

Added:
  head/gnu/usr.bin/cc/cc_tools/Makefile.hdrs   (contents, props changed)
Modified:
  head/gnu/lib/csu/Makefile
  head/gnu/lib/libgcc/Makefile
  head/gnu/lib/libgcov/Makefile
  head/gnu/usr.bin/cc/cc_tools/Makefile

Modified: head/gnu/lib/csu/Makefile
==============================================================================
--- head/gnu/lib/csu/Makefile   Mon Apr 18 18:12:12 2016        (r298217)
+++ head/gnu/lib/csu/Makefile   Mon Apr 18 18:13:58 2016        (r298218)
@@ -7,10 +7,11 @@ GCCDIR=       ${.CURDIR}/../../../contrib/gcc
 GCCLIB=        ${.CURDIR}/../../../contrib/gcclibs
 CCDIR= ${.CURDIR}/../../usr.bin/cc
 .include "${CCDIR}/Makefile.tgt"
+.include "${CCDIR}/cc_tools/Makefile.hdrs"
 
 .PATH: ${GCCDIR}/config/${GCC_CPU} ${GCCDIR}
 
-SRCS=          crtstuff.c tconfig.h tm.h options.h
+SRCS=          crtstuff.c ${COMMONHDRS}
 OBJS=          crtbegin.o crtend.o crtbeginT.o
 SOBJS=         crtbeginS.o crtendS.o
 CSTD?=         gnu89
@@ -70,8 +71,7 @@ crtendS.o:    ${ENDSRC}
        ${CC} ${CFLAGS} -g0 -DCRT_END ${CRTS_CFLAGS} \
                -c -o ${.TARGET} ${.ALLSRC:N*.h}
 
-CLEANFILES+=   tm.h tconfig.h options.h optionlist cs-tconfig.h cs-tm.h
-tm.h tconfig.h options.h: ${CCDIR}/cc_tools/Makefile .PHONY
-       (cd ${.CURDIR}; ${MAKE} -f ${.ALLSRC} MFILE=${.ALLSRC} GCCDIR=${GCCDIR} 
${.TARGET})
+COMMONHDRS+=   tm.h tconfig.h options.h
+CLEANFILES+=   ${COMMONHDRS} optionlist cs-tconfig.h cs-tm.h
 
 .include <bsd.lib.mk>

Modified: head/gnu/lib/libgcc/Makefile
==============================================================================
--- head/gnu/lib/libgcc/Makefile        Mon Apr 18 18:12:12 2016        
(r298217)
+++ head/gnu/lib/libgcc/Makefile        Mon Apr 18 18:13:58 2016        
(r298218)
@@ -3,6 +3,7 @@
 PACKAGE=       clibs
 GCCDIR=        ${.CURDIR}/../../../contrib/gcc
 GCCLIB=        ${.CURDIR}/../../../contrib/gcclibs
+CCDIR= ${.CURDIR}/../../usr.bin/cc
 COMPILERRTDIR= ${.CURDIR}/../../../contrib/compiler-rt
 UNWINDINCDIR=  ${.CURDIR}/../../../contrib/llvm/projects/libunwind/include
 UNWINDSRCDIR=  ${.CURDIR}/../../../contrib/llvm/projects/libunwind/src
@@ -17,7 +18,8 @@ SHLIBDIR?=    /lib
 #
 MK_SSP=        no
 
-.include "${.CURDIR}/../../usr.bin/cc/Makefile.tgt"
+.include "${CCDIR}/Makefile.tgt"
+.include "${CCDIR}/cc_tools/Makefile.hdrs"
 
 .if ${TARGET_CPUARCH} == "arm"
 CFLAGS+=       -DTARGET_ARM_EABI
@@ -29,7 +31,7 @@ CFLAGS+=      -DIN_GCC -DIN_LIBGCC2 -D__GCC_F
                -DHAVE_GTHR_DEFAULT \
                -I${GCCLIB}/include \
                -I${GCCDIR}/config -I${GCCDIR} -I. \
-               -I${.CURDIR}/../../usr.bin/cc/cc_tools
+               -I${CCDIR}/cc_tools
 
 LDFLAGS+=      -nodefaultlibs
 LIBADD+=       c
@@ -340,13 +342,6 @@ ${_src:R:S/$/.So/}: ${_src} ${COMMONHDRS
 .endfor
 
 
-#-----------------------------------------------------------------------
-#
-# Generated headers
-#
-${COMMONHDRS}: ${.CURDIR}/../../usr.bin/cc/cc_tools/Makefile .PHONY
-       (cd ${.CURDIR}; ${MAKE} -f ${.ALLSRC} MFILE=${.ALLSRC} GCCDIR=${GCCDIR} 
${.TARGET})
-
 CLEANFILES += ${COMMONHDRS}
 CLEANFILES += cs-*.h option*
 

Modified: head/gnu/lib/libgcov/Makefile
==============================================================================
--- head/gnu/lib/libgcov/Makefile       Mon Apr 18 18:12:12 2016        
(r298217)
+++ head/gnu/lib/libgcov/Makefile       Mon Apr 18 18:13:58 2016        
(r298218)
@@ -4,17 +4,20 @@ MK_PROFILE=   no
 MK_SSP=                no
 
 .include <src.opts.mk>
-.include "${.CURDIR}/../../usr.bin/cc/Makefile.tgt"
 
 GCCDIR=        ${.CURDIR}/../../../contrib/gcc
 GCCLIB=        ${.CURDIR}/../../../contrib/gcclibs
+CCDIR= ${.CURDIR}/../../usr.bin/cc
+.include "${CCDIR}/Makefile.tgt"
+.include "${CCDIR}/cc_tools/Makefile.hdrs"
+
 .PATH: ${GCCDIR}/config/${GCC_CPU} ${GCCDIR}
 
 LIB=           gcov
 
 CFLAGS+=       -DIN_GCC -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED
 CFLAGS+=       -D_PTHREADS -DGTHREAD_USE_WEAK
-CFLAGS+=       -I${.CURDIR}/../../usr.bin/cc/cc_tools \
+CFLAGS+=       -I${CCDIR}/cc_tools \
                -I${GCCLIB}/include -I${GCCDIR}/config -I${GCCDIR} -I.
 
 .if ${TARGET_CPUARCH} == "arm"
@@ -45,9 +48,6 @@ CC_S =        ${CC} -c ${CFLAGS} ${PICFLAG} -DS
 COMMONHDRS=    tm.h tconfig.h gcov-iov.h options.h
 CLEANFILES+=   ${COMMONHDRS} cs-tm.h cs-tconfig.h options.h optionlist
 
-${COMMONHDRS}: ${.CURDIR}/../../usr.bin/cc/cc_tools/Makefile .PHONY
-       (cd ${.CURDIR}; ${MAKE} -f ${.ALLSRC} MFILE=${.ALLSRC} GCCDIR=${GCCDIR} 
${.TARGET})
-
 ${OBJS} beforedepend: ${COMMONHDRS}
 
 ${OBJS_T}: libgcov.c

Modified: head/gnu/usr.bin/cc/cc_tools/Makefile
==============================================================================
--- head/gnu/usr.bin/cc/cc_tools/Makefile       Mon Apr 18 18:12:12 2016        
(r298217)
+++ head/gnu/usr.bin/cc/cc_tools/Makefile       Mon Apr 18 18:13:58 2016        
(r298218)
@@ -5,6 +5,9 @@
 CFLAGS+=       -I.
 
 .include "../Makefile.inc"
+# Some of the logic needed in here is defined in Makefile.hdrs as it is shared
+# with gnu/lib.
+.include "Makefile.hdrs"
 
 CFLAGS+=       -g
 CFLAGS+=       -DGENERATOR_FILE -DHAVE_CONFIG_H
@@ -21,51 +24,6 @@ LIBIBERTY=   libiberty.a
 #
 # The list of headers to go into tm.h
 #
-TARGET_INC+=   options.h
-.if ${TARGET_CPUARCH} == "amd64"
-TARGET_INC+=   i386/biarch64.h
-.endif
-.if ${TARGET_CPUARCH} != "arm"
-TARGET_INC+=   ${GCC_CPU}/${GCC_CPU}.h
-.endif
-.if ${TARGET_CPUARCH} == "i386" || ${TARGET_CPUARCH} == "amd64"
-TARGET_INC+=   ${GCC_CPU}/unix.h
-TARGET_INC+=   ${GCC_CPU}/att.h
-.endif
-TARGET_INC+=   dbxelf.h
-TARGET_INC+=   elfos-undef.h
-TARGET_INC+=   elfos.h
-TARGET_INC+=   freebsd-native.h
-TARGET_INC+=   freebsd-spec.h
-TARGET_INC+=   freebsd.h
-.if ${TARGET_CPUARCH} != "i386" && ${TARGET_CPUARCH} != "amd64"
-. if exists(${GCCDIR}/config/${GCC_CPU}/sysv4.h)
-TARGET_INC+=   ${GCC_CPU}/sysv4.h
-. endif
-.endif
-.if ${TARGET_CPUARCH} == "amd64"
-TARGET_INC+=   ${GCC_CPU}/x86-64.h
-.endif
-.if ${TARGET_CPUARCH} == "arm" || ${TARGET_CPUARCH} == "mips"
-TARGET_INC+=   ${GCC_CPU}/elf.h
-.endif
-.if ${TARGET_CPUARCH} == "arm"
-TARGET_INC+=   ${GCC_CPU}/aout.h
-TARGET_INC+=   ${GCC_CPU}/bpabi.h
-.endif
-.if ${TARGET_ARCH} == "powerpc64"
-TARGET_INC+=   ${GCC_CPU}/biarch64.h
-TARGET_INC+=    ${GCC_CPU}/default64.h
-.endif
-TARGET_INC+=   ${GCC_CPU}/freebsd.h
-.if ${TARGET_CPUARCH} == "amd64"
-TARGET_INC+=   ${GCC_CPU}/freebsd64.h
-.endif
-.if ${TARGET_CPUARCH} == "arm"
-TARGET_INC+=   ${GCC_CPU}/arm.h
-.endif
-TARGET_INC+=   defaults.h
-
 .for H in ${TARGET_INC}
 .for D in ${GCCDIR}/config ${GCCDIR} ${.CURDIR}
 .if exists($D/$H)
@@ -155,31 +113,6 @@ TREE_DEF_FILES=
 TREE_DEF_FILES+=       cp/cp-tree.def
 .endif
 
-#
-# Option files.
-#
-OPT_FILES=     c.opt common.opt
-
-.if exists(${GCCDIR}/config/${GCC_CPU}/${GCC_CPU}.opt)
-OPT_FILES+=    ${GCCDIR}/config/${GCC_CPU}/${GCC_CPU}.opt
-.endif
-
-.if exists(${.CURDIR}/${GCC_CPU}-freebsd.opt)
-OPT_FILES+=    ${.CURDIR}/${GCC_CPU}-freebsd.opt
-.endif
-
-.if ${TARGET_CPUARCH} == "powerpc"
-OPT_FILES+=    ${GCCDIR}/config/${GCC_CPU}/sysv4.opt
-.endif
-
-.if ${TARGET_CPUARCH} == "sparc64"
-OPT_FILES+=    ${GCCDIR}/config/${GCC_CPU}/long-double-switch.opt
-.endif
-
-.if exists(${.CURDIR}/freebsd.opt)
-OPT_FILES+=    ${.CURDIR}/freebsd.opt
-.endif
-
 #-----------------------------------------------------------------------
 # Build rules for header files and generator tools
 
@@ -207,41 +140,13 @@ GENSRCS+= bconfig.h
 CLEANFILES+=   cs-bconfig.h
 
 # tconfig.h
-tconfig.h:
-       TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \
-       HEADERS="auto-host.h ansidecl.h" \
-       DEFINES="USED_FOR_TARGET" \
-       /bin/sh ${GCCDIR}/mkconfig.sh ${.TARGET}
-
 GENSRCS+=      tconfig.h
 CLEANFILES+=   cs-tconfig.h
 
 # Options
-optionlist: ${OPT_FILES}
-       LC_ALL=C awk -f ${GCCDIR}/opt-gather.awk ${.ALLSRC} > ${.TARGET}
-
-options.h:     optionlist
-       LC_ALL=C awk -f ${GCCDIR}/opt-functions.awk \
-           -f ${GCCDIR}/opth-gen.awk \
-               < ${.ALLSRC} > ${.TARGET}
-
-options.c:     optionlist
-       LC_ALL=C awk -f ${GCCDIR}/opt-functions.awk \
-           -f ${GCCDIR}/optc-gen.awk \
-               -v header_name="config.h system.h coretypes.h tm.h" \
-               < ${.ALLSRC} > ${.TARGET}
 GENONLY+=      optionlist options.h options.c
 
 # Target machine config
-tm.h:
-       TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \
-       HEADERS="${TARGET_INC}" \
-       DEFINES="" \
-       /bin/sh ${GCCDIR}/mkconfig.sh ${.TARGET}
-.if exists(${GCCDIR}/config/${GCC_CPU}/${GCC_CPU}-modes.def)
-       echo '#define EXTRA_MODES_FILE "${GCC_CPU}/${GCC_CPU}-modes.def"' >> 
${.TARGET}
-.endif
-
 GENSRCS+=      tm.h
 CLEANFILES+=   cs-tm.h
 
@@ -294,9 +199,6 @@ gtyp-gen.h: ${GTFILES}
 GENSRCS+=      gtyp-gen.h
 
 # Version header for gcov
-gcov-iov.h:
-       echo "#define GCOV_VERSION ((gcov_unsigned_t)0x34303270)" >> ${.TARGET}
-
 GENSRCS+=      gcov-iov.h
 
 # Multilib config file
@@ -346,20 +248,8 @@ gstdint.h:
 GENSRCS+=      gstdint.h
 
 # Linked headers
-gthr-default.h: ${GCCDIR}/gthr-posix.h .NOMETA
-       ln -sf ${.ALLSRC} ${.TARGET}
-
 GENSRCS+=      gthr-default.h
 
-.if ${TARGET_CPUARCH} == "arm"
-unwind.h: ${GCCDIR}/config/arm/unwind-arm.h
-.else
-unwind.h: ${GCCDIR}/unwind-generic.h
-.endif
-
-unwind.h: .NOMETA
-       ln -sf ${.ALLSRC} ${.TARGET}
-
 GENSRCS+=      unwind.h
 
 #

Added: head/gnu/usr.bin/cc/cc_tools/Makefile.hdrs
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/gnu/usr.bin/cc/cc_tools/Makefile.hdrs  Mon Apr 18 18:13:58 2016        
(r298218)
@@ -0,0 +1,132 @@
+# $FreeBSD$
+#
+# This is logic for common headers shared inside of gnu/lib.  It used to
+# live in gnu/usr.bin/cc/cc_tools/Makefile.
+
+.if !defined(TARGET_CPUARCH) || !defined(GCC_CPU)
+.error ${.CURDIR}: Must include gnu/usr.bin/cc/Makefile.tgt first.
+.endif
+
+#
+# The list of headers to go into tm.h
+#
+TARGET_INC+=   options.h
+.if ${TARGET_CPUARCH} == "amd64"
+TARGET_INC+=   i386/biarch64.h
+.endif
+.if ${TARGET_CPUARCH} != "arm"
+TARGET_INC+=   ${GCC_CPU}/${GCC_CPU}.h
+.endif
+.if ${TARGET_CPUARCH} == "i386" || ${TARGET_CPUARCH} == "amd64"
+TARGET_INC+=   ${GCC_CPU}/unix.h
+TARGET_INC+=   ${GCC_CPU}/att.h
+.endif
+TARGET_INC+=   dbxelf.h
+TARGET_INC+=   elfos-undef.h
+TARGET_INC+=   elfos.h
+TARGET_INC+=   freebsd-native.h
+TARGET_INC+=   freebsd-spec.h
+TARGET_INC+=   freebsd.h
+.if ${TARGET_CPUARCH} != "i386" && ${TARGET_CPUARCH} != "amd64"
+. if exists(${GCCDIR}/config/${GCC_CPU}/sysv4.h)
+TARGET_INC+=   ${GCC_CPU}/sysv4.h
+. endif
+.endif
+.if ${TARGET_CPUARCH} == "amd64"
+TARGET_INC+=   ${GCC_CPU}/x86-64.h
+.endif
+.if ${TARGET_CPUARCH} == "arm" || ${TARGET_CPUARCH} == "mips"
+TARGET_INC+=   ${GCC_CPU}/elf.h
+.endif
+.if ${TARGET_CPUARCH} == "arm"
+TARGET_INC+=   ${GCC_CPU}/aout.h
+TARGET_INC+=   ${GCC_CPU}/bpabi.h
+.endif
+.if ${TARGET_ARCH} == "powerpc64"
+TARGET_INC+=   ${GCC_CPU}/biarch64.h
+TARGET_INC+=    ${GCC_CPU}/default64.h
+.endif
+TARGET_INC+=   ${GCC_CPU}/freebsd.h
+.if ${TARGET_CPUARCH} == "amd64"
+TARGET_INC+=   ${GCC_CPU}/freebsd64.h
+.endif
+.if ${TARGET_CPUARCH} == "arm"
+TARGET_INC+=   ${GCC_CPU}/arm.h
+.endif
+TARGET_INC+=   defaults.h
+
+#
+# Option files.
+#
+OPT_FILES=     c.opt common.opt
+
+.if exists(${GCCDIR}/config/${GCC_CPU}/${GCC_CPU}.opt)
+OPT_FILES+=    ${GCCDIR}/config/${GCC_CPU}/${GCC_CPU}.opt
+.endif
+
+.if exists(${.CURDIR}/${GCC_CPU}-freebsd.opt)
+OPT_FILES+=    ${.CURDIR}/${GCC_CPU}-freebsd.opt
+.endif
+
+.if ${TARGET_CPUARCH} == "powerpc"
+OPT_FILES+=    ${GCCDIR}/config/${GCC_CPU}/sysv4.opt
+.endif
+
+.if ${TARGET_CPUARCH} == "sparc64"
+OPT_FILES+=    ${GCCDIR}/config/${GCC_CPU}/long-double-switch.opt
+.endif
+
+.if exists(${.CURDIR}/freebsd.opt)
+OPT_FILES+=    ${.CURDIR}/freebsd.opt
+.endif
+
+
+# Options
+optionlist: ${OPT_FILES}
+       LC_ALL=C awk -f ${GCCDIR}/opt-gather.awk ${.ALLSRC} > ${.TARGET}
+
+options.h:     optionlist
+       LC_ALL=C awk -f ${GCCDIR}/opt-functions.awk \
+           -f ${GCCDIR}/opth-gen.awk \
+               < ${.ALLSRC} > ${.TARGET}
+
+options.c:     optionlist
+       LC_ALL=C awk -f ${GCCDIR}/opt-functions.awk \
+           -f ${GCCDIR}/optc-gen.awk \
+               -v header_name="config.h system.h coretypes.h tm.h" \
+               < ${.ALLSRC} > ${.TARGET}
+
+# Target machine config
+tm.h:
+       TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \
+       HEADERS="${TARGET_INC}" \
+       DEFINES="" \
+       /bin/sh ${GCCDIR}/mkconfig.sh ${.TARGET}
+.if exists(${GCCDIR}/config/${GCC_CPU}/${GCC_CPU}-modes.def)
+       echo '#define EXTRA_MODES_FILE "${GCC_CPU}/${GCC_CPU}-modes.def"' >> 
${.TARGET}
+.endif
+
+# tconfig.h
+tconfig.h:
+       TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \
+       HEADERS="auto-host.h ansidecl.h" \
+       DEFINES="USED_FOR_TARGET" \
+       /bin/sh ${GCCDIR}/mkconfig.sh ${.TARGET}
+
+# Version header for gcov
+gcov-iov.h:
+       echo "#define GCOV_VERSION ((gcov_unsigned_t)0x34303270)" >> ${.TARGET}
+
+# Linked headers
+gthr-default.h: ${GCCDIR}/gthr-posix.h .NOMETA
+       ln -sf ${.ALLSRC} ${.TARGET}
+
+.if ${TARGET_CPUARCH} == "arm"
+unwind.h: ${GCCDIR}/config/arm/unwind-arm.h
+.else
+unwind.h: ${GCCDIR}/unwind-generic.h
+.endif
+
+unwind.h: .NOMETA
+       ln -sf ${.ALLSRC} ${.TARGET}
+
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to