]> Zhao Yanbai Git Server - minix.git/commitdiff
Improve the process for GNU tools 55/3355/3
authorAntoine Leca <Antoine.Leca.1@gmail.com>
Mon, 29 Aug 2016 11:48:31 +0000 (13:48 +0200)
committerLionel Sambuc <lionel.sambuc@gmail.com>
Thu, 1 Sep 2016 19:16:13 +0000 (21:16 +0200)
Split the process to fetch GNU tools (until now embedded
within tools/Makefile.gnuhost) into a new Makefile.fetchgnu,
MINIX-specific hence relocated, which is to be also used
to fetch sources even when not building the tools.
Use it for binutils too.
Improve documentation.

Also do not run configure on each run when MKUPDATE=yes
The .WAIT serialization instruction between fetching and other
configure sources was raising a new run of configure at each
compilation. Avoid it by using two rules.

Change-Id: Ie24950ccbb5c5067f3c1ea57b7bd8294e4c9445e

external/gpl3/binutils/lib/libbfd/Makefile
external/gpl3/binutils/lib/libiberty/Makefile
external/gpl3/binutils/lib/libopcodes/Makefile
gnu/Makefile
gnu/dist/Makefile [deleted file]
gnu/usr.bin/texinfo/makedoc/Makefile
minix/Makefile.fetchgnu [new file with mode: 0644]
tools/Makefile.gnuhost
tools/binutils/Makefile

index 195fb93fd23b95251f0fefbd40b335713bdd847d..616122a3ebb981db3f007b0e8e4971930e3e7cd3 100644 (file)
@@ -27,6 +27,12 @@ DEFS_MK=${.CURDIR}/arch/${BFD_MACHINE_ARCH}/defs.mk
 
 DIST=          ${NETBSDSRCDIR}/external/gpl3/binutils/dist
 
+.if defined(__MINIX)
+# MINIX: make sure sources are fetched, even when tools not built earlier
+GNUHOSTDIST=   ${DIST}
+.include "${.CURDIR}/../../../../../minix/Makefile.fetchgnu"
+.endif # defined(__MINIX)
+
 SHLIB_MAJOR=   13
 SHLIB_MINOR=   0
 
@@ -105,3 +111,8 @@ pepigen.c: peXXigen.c
 pex64igen.c: peXXigen.c
        ${_MKTARGET_CREATE}
        ${TOOL_SED} -e s/XX/pex64/g < $> > $@
+
+.if defined(__MINIX) && ${USETOOLS} != "yes"
+# Trigger the fetch phase, even when not building tools
+${SRCS} realdepend realall realinstall: ${fetch_done}
+.endif # defined(__MINIX)
index 41a05d87bef3332c52e0ba27ec602611af64c989..23fcf9f3ef6cfa963e909ed6470d5febda40c7b9 100644 (file)
@@ -21,6 +21,12 @@ COPTS.regex.c = -Wno-stack-protector
 
 DIST=          ${NETBSDSRCDIR}/external/gpl3/binutils/dist
 
+.if defined(__MINIX)
+# MINIX: make sure sources are fetched, even when tools not built earlier
+GNUHOSTDIST=   ${DIST}
+.include "${.CURDIR}/../../../../../minix/Makefile.fetchgnu"
+.endif # defined(__MINIX)
+
 SRCS=          ${G_REQUIRED_OFILES:.o=.c} ${G_EXTRA_OFILES:.o=.c} \
                ${G_LIBOBJS:.o=.c} ${G_ALLOCA:.o=.c}
 
@@ -30,3 +36,8 @@ CPPFLAGS+=    -DHAVE_CONFIG_H -I${.CURDIR}/arch/${BINUTILS_MACHINE_ARCH} \
 .PATH: ${DIST}/libiberty
 
 .include <bsd.lib.mk>
+
+.if defined(__MINIX) && ${USETOOLS} != "yes"
+# Trigger the fetch phase, even when not building tools
+${SRCS} realdepend realall realinstall: ${fetch_done}
+.endif # defined(__MINIX)
index 515ee8490490fe0477907e6331555efd709ddea7..63c5e561bfae00afe7f59d08486f7b2a3951773b 100644 (file)
@@ -17,6 +17,12 @@ BFD_MACHINE_ARCH?=   ${MACHINE_ARCH:C/armv[4-7]/arm/}
 
 DIST=          ${NETBSDSRCDIR}/external/gpl3/binutils/dist
 
+.if defined(__MINIX)
+# MINIX: make sure sources are fetched, even when tools not built earlier
+GNUHOSTDIST=   ${DIST}
+.include "${.CURDIR}/../../../../../minix/Makefile.fetchgnu"
+.endif # defined(__MINIX)
+
 SHLIB_MAJOR=   6
 SHLIB_MINOR=   0
 
@@ -34,6 +40,11 @@ SRCS=                ${GSRCS:.lo=.c} ${G_libopcodes_la_SOURCES}
 
 .include <bsd.lib.mk>
 
+.if defined(__MINIX) #&& ${USETOOLS} != "yes"
+# Trigger the fetch phase, even when not building tools
+${SRCS} realdepend realall realinstall: ${fetch_done}
+.endif # defined(__MINIX)
+
 .else
 .include <bsd.prog.mk> # do nothing
 .endif
index 41038e3595e4c0b7f5b97a4f22c590dcd55a0534..0800e8544cac29d24d7f901ca46cde624a52671d 100644 (file)
@@ -1,9 +1,5 @@
 #      $NetBSD: Makefile,v 1.17 2010/12/03 21:38:47 plunky Exp $
 
-.if defined(__MINIX)
-#LSC: Trigger fetch.sh script
-SUBDIR+= dist .WAIT
-.endif # defined(__MINIX)
 SUBDIR+= usr.bin
 
 # Speedup stubs for some subtrees that don't need to run these rules
diff --git a/gnu/dist/Makefile b/gnu/dist/Makefile
deleted file mode 100644 (file)
index 3646a1a..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-# LSC FIXME: Hackish way to trigger the fetch phase from here
-#           in the same way as from tools.
-
-.include <bsd.own.mk>
-
-MODULE=        texinfo
-
-.include "${.CURDIR}/../../tools/Makefile.gnuhost"
-
-# Force the mapping to standard targets even when not building tools
-# We considere work to be done as soon as the fetch step is done,
-# as everything else has to be triggered from /tools or ../usr.bin
-
-.if ${USETOOLS} != "yes"
-realall realinstall: ${GNUHOSTDIST:H}/.gitignore
-
-.endif
-
index ea7e579a37f52b76e9e808a44db5399f1d919cda..145d5db9fb1d6e9e29d2626a87a49f4b8a699ed0 100644 (file)
@@ -5,6 +5,13 @@ MAKEDOC=
 
 .include "../Makefile.inc"
 
+.if defined(__MINIX)
+#LSC: First program within texinfo: trigger fetch.sh script
+MODULE=                texinfo
+GNUHOSTDIST=   ${DIST}/${MODULE}
+.include "${.CURDIR}/../../../../minix/Makefile.fetchgnu"
+.endif # defined(__MINIX)
+
 HOSTPROG=      makedoc
 SRCS=          makedoc.c xexit.c xmalloc.c xstrdup.c
 
@@ -13,3 +20,8 @@ HOST_CPPFLAGS+= -I${IDIST}/info -I${IDIST}/lib -I${.CURDIR}/../common
 HOST_CPPFLAGS+= -DHOSTTOOL
 
 .include <bsd.hostprog.mk>
+
+.if defined(__MINIX) && ${USETOOLS} != "yes"
+# MINIX: make sure sources are fetched, even when tools not built earlier
+${SRCS} realdepend realall realinstall: ${fetch_done}
+.endif # defined(__MINIX)
diff --git a/minix/Makefile.fetchgnu b/minix/Makefile.fetchgnu
new file mode 100644 (file)
index 0000000..6f0dddb
--- /dev/null
@@ -0,0 +1,71 @@
+#      NOT NetBSD
+#
+# Rules used to fetch a GNU package.  Expects GNUHOSTDIST to be set
+# and <bsd.own.mk> to be previously .include'd.
+#
+# New interface:
+#
+#   * When using the `cleandir' target, defining CLEANFETCHED=yes will
+#     additionally remove all the fetched files.
+#     This is particularly useful when a GNU package is updated.
+#
+# The rest should be operations hidden to the normal programmers.
+#
+# How to use: (maintainers manual)
+#
+#   * put a fetch.sh script one directory below the GNUHOSTDIST;
+#
+#   * .include "path/to/minix/Makefile.fetchgnu", after having
+#     defined GNUHOSTDIST and before any use of the variable below;
+#
+#   * insert ${fetch_done} as source before performing any operation
+#     on the files under GPL license which are usually found
+#     within NetBSD src/ tree;
+#
+#   * rinse and repeat for every target which assumes the presence of
+#    these files, and for every Makefile operating upon them.
+#
+#
+# TODO: does not handle correctly the cases where there are more than
+# one package downloaded by fetch.sh (e.g.gnu/dist with texinfo+gmake):
+# .gitignore only "protects" the first package which triggers.
+
+.if !defined(__MINIX) || !defined(GNUHOSTDIST)
+.error Bad logic in Makefiles.
+.endif
+
+.if !defined(_MINIX_FETCHGNU_MK_)
+_MINIX_FETCHGNU_MK_=1
+
+# MINIX /usr/src does not have the sources for the GNU utilities
+# in-tree, for licensing reasons. So to successfully use them while
+# cross-compiling, we have to fetch them. The success of that operation
+# is indicated by the presence of a .gitignore file in the corresponding
+# source parent directory, which also conveniently hides from git.
+.if exists(${GNUHOSTDIST:H}/fetch.sh)
+${GNUHOSTDIST:H}/.gitignore: ${GNUHOSTDIST:H}/fetch.sh
+       SED=${TOOL_SED} ${HOST_SH} ${GNUHOSTDIST:H}/fetch.sh
+       @test -e ${GNUHOSTDIST}/configure
+       @echo "${MODULE:U${.CURDIR:T}:C,gcc[0-9]*,gcc,:C,gmake*,make,}-*.tar.*z*" >> $@
+       @echo ${GNUHOSTDIST:T} >> $@
+
+# Do the fetching as an extra step, to force serialization
+.fetch_done: ${GNUHOSTDIST:H}/.gitignore
+       @touch $@
+fetch_done=.fetch_done
+
+# Special target for MINIX, reset the source tree as pristine
+# Note it does NOT remove the downloaded tarball
+.if ${CLEANFETCHED:Uno} == "yes"
+cleandir: clean_gnu_src
+clean_gnu_src:
+       -rm -r -f ${GNUHOSTDIST} ${GNUHOSTDIST:H}/.gitignore
+.endif # CLEANFETCHED == yes
+
+clean: clean.fetchgnu
+clean.fetchgnu:
+       -@rm -f .fetch_done
+
+.endif # exists(GNUHOSTDIST:H/fetch.sh) on MINIX
+
+.endif # !defined(_MINIX_FETCHGNU_MK_)
index fe2a0c17f1a3400f1a404d7d97a6a255eb014456..f1342fe48f4bb75768893207956ae69c74abdef4 100644 (file)
@@ -27,27 +27,7 @@ MAKE_PROGRAM?=       ${MAKE}
 GNUHOSTDIST?=  ${.CURDIR}/../../gnu/dist/${MODULE}
 
 .if defined(__MINIX)
-# AL - MINIX /usr/src does not have the sources for the GNU utilities
-# in-tree (they are much bigger than Minix itself!) So to successfully
-# use them while cross-compiling, we have to fetch them. The success of
-# that operation is indicated by the presence of a .gitignore file in
-# the corresponding ${.CURDIR}, which also conveniently hides from git.
-.if exists(${GNUHOSTDIST:H}/fetch.sh)
-${GNUHOSTDIST:H}/.gitignore: ${GNUHOSTDIST:H}/fetch.sh
-       SED=${TOOL_SED} ${HOST_SH} ${GNUHOSTDIST:H}/fetch.sh
-       @test -e ${GNUHOSTDIST}/configure
-       @echo "${MODULE:U${.CURDIR:T}:C,gcc[0-9]*,gcc,:C,gmake*,make,}-*.tar.*z*" >> $@
-       @echo ${GNUHOSTDIST:T} >> $@
-_gnu_get_src=${GNUHOSTDIST:H}/.gitignore
-.endif # exists(GNUHOSTDIST:H/fetch.sh) on MINIX
-
-# AL - Special target for MINIX, reset the source tree as pristine
-.if ${CLEANFETCHED:Uno} == "yes" && exists(${GNUHOSTDIST:H}/fetch.sh)
-cleandir: clean_gnu_src
-clean_gnu_src:
-       -rm -r -f ${GNUHOSTDIST} ${GNUHOSTDIST:H}/.gitignore
-# XXX CHECKME: could have used the content of .gitignore as well?
-.endif # CLEANFETCHED == yes
+.include "../minix/Makefile.fetchgnu"
 .endif # defined(__MINIX)
 
 FIND_ARGS+=    \! \( -type d \( \
@@ -134,7 +114,7 @@ configure_cleanup=configure_cleanup
 .endif
 
 # AL For MINIX, fetch the source if not there
-.configure_done: ${_gnu_get_src} .WAIT ${_GNU_CFGSRC} ${.CURDIR}/Makefile ${configure_cleanup}
+.configure_done: ${fetch_done} ${_GNU_CFGSRC} ${.CURDIR}/Makefile ${configure_cleanup}
        @mkdir build 2>/dev/null || true
        @(cd build && ${CONFIGURE_ENV} ${HOST_SH} ${GNUHOSTDIST}/configure ${CONFIGURE_ARGS})
        @echo ${BUILD_PLATFORM} > $@
index 1878deca82f750d32baa0cb3e077133dbba3b91d..c0b4fa77a5c36346ee27412d753a8d751887f2a4 100644 (file)
@@ -16,12 +16,15 @@ CONFIGURE_ARGS=     --target=${MACHINE_GNU_PLATFORM} --disable-nls \
                --disable-werror \
                ${BRANDING}
 
-.if !defined(__MINIX)
-build/gas/m68k-parse.c: ${GNUHOSTDIST}/gas/m68k-parse.c
-.else
+.if defined(__MINIX) && ! exists(${GNUHOSTDIST}/gas/m68k-parse.c)
 # MINIX: LSC: Make sure we trigger the fetch rule
-build/gas/m68k-parse.c: ${GNUHOSTDIST:H}/.gitignore .WAIT ${GNUHOSTDIST}/gas/m68k-parse.c
-.endif # !defined(__MINIX)
+.include "${.CURDIR}/../../minix/Makefile.fetchgnu"
+
+${GNUHOSTDIST}/gas/m68k-parse.c: ${fetch_done}
+       @true
+.endif # defined(__MINIX)
+
+build/gas/m68k-parse.c: ${GNUHOSTDIST}/gas/m68k-parse.c
        @mkdir build 2>/dev/null || true
        @mkdir build/gas 2>/dev/null || true
        cat ${GNUHOSTDIST}/gas/m68k-parse.c > ${.TARGET}