fix target system names
[openadk.git] / mk / fetch.mk
blob2172e9d86d0b84f68dbc0a4724f533805ad7a9d2
1 # This file is part of the OpenADK project. OpenADK is copyrighted
2 # material, please see the LICENCE file in the top-level directory.
4 ifneq ($(strip ${DIST_SUBDIR}),)
5 FULLDISTDIR?= ${DISTDIR}/${DIST_SUBDIR}
6 else
7 FULLDISTDIR?= ${DISTDIR}
8 endif
10 FULLDISTFILES= $(patsubst %,${FULLDISTDIR}/%,${DISTFILES})
12 FETCH_STYLE?= auto
13 #pre-fetch:
14 do-fetch:
15 #post-fetch:
16 fetch:
17 # @${MAKE} pre-fetch
18 ifneq ($(filter auto,${FETCH_STYLE}),)
19 ${MAKE} ${FULLDISTFILES}
20 else
21 ${MAKE} do-fetch
22 endif
23 # @${MAKE} post-fetch
25 refetch:
26 -rm -f ${FULLDISTFILES}
27 ${MAKE} fetch
29 # XXX for now
30 _CHECKSUM_COOKIE?= ${WRKDIR}/.checksum_done
31 checksum: ${_CHECKSUM_COOKIE}
32 ifeq ($(strip ${NO_CHECKSUM}),)
33 ${_CHECKSUM_COOKIE}: ${FULLDISTFILES}
34 -rm -rf ${WRKDIR}
35 @OK=n; \
36 (md5sum ${FULLDISTFILES}; echo exit) | while read sum name; do \
37 if [[ $$sum = exit ]]; then \
38 [[ $$OK = n ]] && echo >&2 "==> No distfile found!" || :; \
39 [[ $$OK = 1 ]] || exit 1; \
40 break; \
41 fi; \
42 if [[ $$sum = "$(strip ${PKG_MD5SUM})" ]]; then \
43 [[ $$OK = 0 ]] || OK=1; \
44 continue; \
45 fi; \
46 echo >&2 "==> Checksum mismatch for $${name##*/} (MD5)"; \
47 echo >&2 ":---> should be '$(strip ${PKG_MD5SUM})'"; \
48 echo >&2 ":---> really is '$$sum'"; \
49 OK=0; \
50 done
51 mkdir -p ${WRKDIR}
52 touch ${_CHECKSUM_COOKIE}
53 endif
55 # GNU make's poor excuse for loops
56 define FETCH_template
57 $(1):
58 @fullname='$(1)'; \
59 subname=$$$${fullname##$${DISTDIR}/}; \
60 filename=$$$${fullname##*/}; \
61 i='$${LOCAL_DISTDIR}'; \
62 if [[ -n $$$$i && -e $$$$i/$$$$subname ]]; then \
63 cd "$$$$i"; \
64 echo pax -rw "$$$$subname" '$${DISTDIR}/'; \
65 exec pax -rw "$$$$subname" '$${DISTDIR}/'; \
66 fi; \
67 mkdir -p "$$$${fullname%%/$$$$filename}"; \
68 cd "$$$${fullname%%/$$$$filename}"; \
69 for site in $${PKG_SITES} $${MASTER_SITE_BACKUP}; do \
70 : echo "$${FETCH_CMD} $$$$site$$$$filename"; \
71 rm -f "$$$$filename"; \
72 if $${FETCH_CMD} $$$$site$$$$filename; then \
73 : check the size here; \
74 [[ ! -e $$$$filename ]] || exit 0; \
75 fi; \
76 done; \
77 exit 1
78 endef
80 $(foreach distfile,${FULLDISTFILES},$(eval $(call FETCH_template,$(distfile))))