source: freewrt/mk/pkg-bottom.mk@ 7ded3ee

Last change on this file since 7ded3ee was a74f13b, checked in by Thorsten Glaser <tg@…>, 19 years ago

drop redundant dependency

git-svn-id: svn://www.freewrt.org/trunk/freewrt@2620 afb5a338-a214-0410-bd46-81f09a774fd1

  • Property mode set to 100644
File size: 5.4 KB
Line 
1# $FreeWRT$
2#-
3# This file is part of the FreeWRT project. FreeWRT is copyrighted
4# material, please see the LICENCE file in the top-level directory
5# or at http://www.freewrt.org/licence for details.
6#-
7# Comments:
8# * pre/do/post-foo are always defined here, but empty. This is so
9# that we can call it (BSD make has .if target(foo) but GNU not)
10# and it won't error out.
11# * ${_foo_COOKIE} are the actual targets
12# * default is "manual" -> define a do-foo: target in the Makefile
13# * if you have a style -> define a pre-foo: and post-foo: if they
14# are required, but the do-foo: magic is done here
15# * we want to use styles (configure:gnu, build/install:auto), for
16# making the Makefiles of the packages more clear
17
18#--- configure
19pre-configure:
20do-configure:
21post-configure:
22${_CONFIGURE_COOKIE}: ${_PATCH_COOKIE}
23 mkdir -p ${WRKBUILD}
24 @${MAKE} pre-configure
25ifneq ($(filter gnu,${CONFIGURE_STYLE}),)
26 cd ${WRKBUILD}; rm -f config.{cache,status}; \
27 env ${CONFIGURE_ENV} \
28 ${MBSH} ${WRKSRC}/configure \
29 --build=${GNU_HOST_NAME} \
30 --host=${GNU_TARGET_NAME} \
31 --target=${GNU_TARGET_NAME} \
32 --program-prefix= \
33 --program-suffix= \
34 --prefix=/usr \
35 --datadir=/usr/share \
36 --mandir=/usr/share/man \
37 --libexecdir=/usr/lib \
38 --localstatedir=/var \
39 --sysconfdir=/etc \
40 --disable-nls \
41 --enable-shared \
42 --disable-static \
43 --disable-dependency-tracking \
44 --disable-libtool-lock \
45 --disable-debug \
46 ${CONFIGURE_ARGS}
47else ifeq ($(filter-out manual,${CONFIGURE_STYLE}),)
48 env ${CONFIGURE_ENV} ${MAKE} do-configure
49else
50 @echo "Invalid CONFIGURE_STYLE '${CONFIGURE_STYLE}'" >&2
51 @exit 1
52endif
53 @${MAKE} post-configure
54 touch $@
55
56#--- build
57pre-build:
58do-build:
59post-build:
60${_BUILD_COOKIE}: ${_CONFIGURE_COOKIE}
61 @env ${MAKE_ENV} ${MAKE} pre-build
62ifneq ($(filter auto,${BUILD_STYLE}),)
63 cd ${WRKBUILD} && env ${MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \
64 ${MAKE_FLAGS} ${ALL_TARGET}
65else ifeq ($(filter-out manual,${BUILD_STYLE}),)
66 env ${MAKE_ENV} ${MAKE} do-build
67else
68 @echo "Invalid BUILD_STYLE '${BUILD_STYLE}'" >&2
69 @exit 1
70endif
71 @env ${MAKE_ENV} ${MAKE} post-build
72 touch $@
73
74#--- fake
75pre-install:
76do-install:
77post-install:
78${_FAKE_COOKIE}: ${_BUILD_COOKIE}
79 -rm -f ${_ALL_CONTROLS}
80 @mkdir -p '${STAGING_PARENT}/pkg' ${WRKINST} '${STAGING_DIR}/scripts'
81 @${MAKE} ${_ALL_CONTROLS}
82 @env ${MAKE_ENV} ${MAKE} pre-install
83ifneq ($(filter auto,${INSTALL_STYLE}),)
84 cd ${WRKBUILD} && env ${MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \
85 DESTDIR='${WRKINST}' ${FAKE_FLAGS} ${INSTALL_TARGET}
86else ifeq ($(filter-out manual,${INSTALL_STYLE}),)
87 env ${MAKE_ENV} ${MAKE} do-install
88else
89 @echo "Invalid INSTALL_STYLE '${INSTALL_STYLE}'" >&2
90 @exit 1
91endif
92ifneq ($(filter confprog,${INSTALL_STYLE}),)
93 for a in ${WRKINST}/usr/{bin/*-config,lib/pkgconfig/*.pc}; do \
94 [[ -e $$a ]] || break; \
95 printf ',g/^prefix=/s,,&${STAGING_DIR},\nwq\n' | ed -s $$a; \
96 done
97 @: # not needed at the moment: ',g/-[IL].{/s,-[IL],&${STAGING_DIR},'
98endif
99 @env ${MAKE_ENV} ${MAKE} post-install
100 @if test -s '${STAGING_PARENT}/pkg/${PKG_NAME}'; then \
101 cd '${STAGING_DIR}'; \
102 while read fn; do \
103 rm -f "$$fn"; \
104 done <'${STAGING_PARENT}/pkg/${PKG_NAME}'; \
105 fi
106 @rm -f '${STAGING_PARENT}/pkg/${PKG_NAME}'
107 @cd ${WRKINST}; \
108 find lib \( -name lib\*.so\* -o -name lib\*.a \) \
109 -exec echo 'WARNING: ${PKG_NAME} installs files in /lib -' \
110 ' fix this!' >&2 \; -quit 2>/dev/null; \
111 find usr ! -type d 2>/dev/null | \
112 grep -v -e '^usr/share' -e '^usr/man' -e '^usr/info' | \
113 tee '${STAGING_PARENT}/pkg/${PKG_NAME}' | \
114 cpio -apdlmu '${STAGING_DIR}'
115 @cd '${STAGING_DIR}'; grep 'usr/lib/.*\.la$$' \
116 '${STAGING_PARENT}/pkg/${PKG_NAME}' | while read fn; do \
117 chmod u+w $$fn; \
118 printf '%s\nwq\n' '/^libdir='\''*/s##&${STAGING_DIR}#' | \
119 ed -s $$fn; \
120 done; grep 'usr/s*bin/' '${STAGING_PARENT}/pkg/${PKG_NAME}' | \
121 while read fn; do \
122 b="$$(dd if="$$fn" bs=2 count=1 2>/dev/null)"; \
123 [[ $$b = '#!' ]] || continue; \
124 cp "$$fn" scripts/; \
125 echo "scripts/$$(basename "$$fn")" \
126 >>'${STAGING_PARENT}/pkg/${PKG_NAME}'; \
127 done
128 touch $@
129
130#--- package
131${_IPKGS_COOKIE}:
132 clean=0; \
133 for f in ${ALL_IPKGS}; do \
134 [[ -e $$f ]] && clean=1; \
135 done; \
136 [[ $$clean = 0 ]] || ${MAKE} clean
137 exec ${MAKE} package
138
139package: ${ALL_IPKGS}
140 @cd $(WRKDIR)/fake-${ARCH}; y=; sp=; for x in ${ALL_IDIRS}; do \
141 y="$$y$$sp$${x#$(WRKDIR)/fake-${ARCH}/}"; \
142 sp=' '; \
143 done; ls=; ln=; x=1; [[ -z $$y ]] || \
144 md5sum $$(find $$y -type f) | \
145 while read sum name; do \
146 inode=$$(ls -i "$$name"); \
147 echo "$$sum $${inode%% *} $$name"; \
148 done | sort | while read sum inode name; do \
149 if [[ $$sum = $$ls ]]; then \
150 [[ $$li = $$inode ]] && continue; \
151 case $$x in \
152 1) echo 'WARNING: duplicate files found in' \
153 'package "${PKG_NAME}"! Fix them.' >&2; \
154 echo -n "> $$ln "; \
155 ;; \
156 2) echo -n "> $$ln "; \
157 ;; \
158 3) echo -n ' '; \
159 ;; \
160 esac; \
161 echo -n "$$name"; \
162 x=3; \
163 else \
164 case $$x in \
165 3) echo; \
166 x=2; \
167 ;; \
168 esac; \
169 fi; \
170 ls=$$sum; \
171 ln=$$name; \
172 li=$$inode; \
173 done
174 touch ${_IPKGS_COOKIE}
175
176#--- clean
177clean-targets: clean-dev-generic
178
179clean-dev-generic:
180 @if test -s '${STAGING_PARENT}/pkg/${PKG_NAME}'; then \
181 cd '${STAGING_DIR}'; \
182 while read fn; do \
183 rm -f "$$fn"; \
184 done <'${STAGING_PARENT}/pkg/${PKG_NAME}'; \
185 fi
186 @rm -f '${STAGING_PARENT}/pkg/${PKG_NAME}'
Note: See TracBrowser for help on using the repository browser.