xref: /minix/minix/Makefile.fetchgnu (revision 045e0ed3)
1#	NOT NetBSD
2#
3# Rules used to fetch a GNU package.  Expects GNUHOSTDIST to be set
4# and <bsd.own.mk> to be previously .include'd.
5#
6# New interface:
7#
8#   * When using the `cleandir' target, defining CLEANFETCHED=yes will
9#     additionally remove all the fetched files.
10#     This is particularly useful when a GNU package is updated.
11#
12# The rest should be operations hidden to the normal programmers.
13#
14# How to use: (maintainers manual)
15#
16#   * put a fetch.sh script one directory below the GNUHOSTDIST;
17#
18#   * .include "path/to/minix/Makefile.fetchgnu", after having
19#     defined GNUHOSTDIST and before any use of the variable below;
20#
21#   * insert ${fetch_done} as source before performing any operation
22#     on the files under GPL license which are usually found
23#     within NetBSD src/ tree;
24#
25#   * rinse and repeat for every target which assumes the presence of
26#    these files, and for every Makefile operating upon them.
27#
28#
29# TODO: does not handle correctly the cases where there are more than
30# one package downloaded by fetch.sh (e.g.gnu/dist with texinfo+gmake):
31# .gitignore only "protects" the first package which triggers.
32
33.if !defined(__MINIX) || !defined(GNUHOSTDIST)
34.error Bad logic in Makefiles.
35.endif
36
37.if !defined(_MINIX_FETCHGNU_MK_)
38_MINIX_FETCHGNU_MK_=1
39
40# MINIX /usr/src does not have the sources for the GNU utilities
41# in-tree, for licensing reasons. So to successfully use them while
42# cross-compiling, we have to fetch them. The success of that operation
43# is indicated by the presence of a .gitignore file in the corresponding
44# source parent directory, which also conveniently hides from git.
45.if exists(${GNUHOSTDIST:H}/fetch.sh)
46${GNUHOSTDIST:H}/.gitignore: ${GNUHOSTDIST:H}/fetch.sh
47	SED=${TOOL_SED} ${HOST_SH} ${GNUHOSTDIST:H}/fetch.sh
48	@test -e ${GNUHOSTDIST}/configure
49	@echo "${MODULE:U${.CURDIR:T}:C,gcc[0-9]*,gcc,:C,gmake*,make,}-*.tar.*z*" >> $@
50	@echo ${GNUHOSTDIST:T} >> $@
51
52# Do the fetching as an extra step, to force serialization
53.fetch_done: ${GNUHOSTDIST:H}/.gitignore
54	@touch $@
55fetch_done=.fetch_done
56
57# Special target for MINIX, reset the source tree as pristine
58# Note it does NOT remove the downloaded tarball
59.if ${CLEANFETCHED:Uno} == "yes"
60cleandir: clean_gnu_src
61clean_gnu_src:
62	-rm -r -f ${GNUHOSTDIST} ${GNUHOSTDIST:H}/.gitignore
63.endif # CLEANFETCHED == yes
64
65clean: clean.fetchgnu
66clean.fetchgnu:
67	-@rm -f .fetch_done
68
69.endif # exists(GNUHOSTDIST:H/fetch.sh) on MINIX
70
71.endif	# !defined(_MINIX_FETCHGNU_MK_)
72