tools.mak 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. # Copyright (C) 2003-2011 the VideoLAN team
  2. #
  3. # This program is free software; you can redistribute it and/or modify
  4. # it under the terms of the GNU General Public License as published by
  5. # the Free Software Foundation; either version 2 of the License, or
  6. # (at your option) any later version.
  7. #
  8. # This program is distributed in the hope that it will be useful,
  9. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. # GNU General Public License for more details.
  12. #
  13. # You should have received a copy of the GNU General Public License
  14. # along with this program; if not, write to the Free Software
  15. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  16. #
  17. include packages.mak
  18. #
  19. # common rules
  20. #
  21. AUTOCONF=$(PREFIX)/bin/autoconf
  22. export AUTOCONF
  23. ifeq ($(shell curl --version >/dev/null 2>&1 || echo FAIL),)
  24. download = curl $(if ${BATCH_MODE},-sS) -f -L --retry-delay 10 --retry 2 -- "$(1)" > "$@"
  25. else ifeq ($(shell wget --version >/dev/null 2>&1 || echo FAIL),)
  26. download = rm -f $@.tmp && \
  27. wget $(if ${BATCH_MODE},-nv) --passive -t 2 -w 10 -c -p -O $@.tmp "$(1)" && \
  28. touch $@.tmp && \
  29. mv $@.tmp $@
  30. else ifeq ($(which fetch >/dev/null 2>&1 || echo FAIL),)
  31. download = rm -f $@.tmp && \
  32. fetch -p -o $@.tmp "$(1)" && \
  33. touch $@.tmp && \
  34. mv $@.tmp $@
  35. else
  36. download = $(error Neither curl nor wget found!)
  37. endif
  38. UNPACK = $(RM) -R $@ \
  39. $(foreach f,$(filter %.tar.gz %.tgz,$^), && tar xzf $(f) $(if ${BATCH_MODE},,-v)) \
  40. $(foreach f,$(filter %.tar.bz2,$^), && tar xjf $(f) $(if ${BATCH_MODE},,-v)) \
  41. $(foreach f,$(filter %.tar.xz,$^), && tar xJf $(f) $(if ${BATCH_MODE},,-v)) \
  42. $(foreach f,$(filter %.zip,$^), && unzip $(if ${BATCH_MODE},-q) $(f))
  43. UNPACK_DIR = $(basename $(basename $(notdir $<)))
  44. APPLY = (cd $(UNPACK_DIR) && patch -p1) <
  45. MOVE = mv $(UNPACK_DIR) $@ && touch $@
  46. #
  47. # package rules
  48. #
  49. # yasm
  50. yasm-$(YASM_VERSION).tar.gz:
  51. $(call download,$(YASM_URL))
  52. yasm: yasm-$(YASM_VERSION).tar.gz
  53. $(UNPACK)
  54. $(MOVE)
  55. .yasm: yasm
  56. (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
  57. touch $@
  58. CLEAN_FILE += .yasm
  59. CLEAN_PKG += yasm
  60. DISTCLEAN_PKG += yasm-$(YASM_VERSION).tar.gz
  61. # cmake
  62. cmake-$(CMAKE_VERSION).tar.gz:
  63. $(call download,$(CMAKE_URL))
  64. cmake: cmake-$(CMAKE_VERSION).tar.gz
  65. $(UNPACK)
  66. $(MOVE)
  67. .cmake: cmake
  68. (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
  69. touch $@
  70. CLEAN_FILE += .cmake
  71. CLEAN_PKG += cmake
  72. DISTCLEAN_PKG += cmake-$(CMAKE_VERSION).tar.gz
  73. # libtool
  74. libtool-$(LIBTOOL_VERSION).tar.xz:
  75. $(call download,$(LIBTOOL_URL))
  76. libtool: libtool-$(LIBTOOL_VERSION).tar.xz
  77. $(UNPACK)
  78. $(MOVE)
  79. .libtool: libtool .automake
  80. (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
  81. ln -sf libtool $(PREFIX)/bin/glibtool
  82. ln -sf libtoolize $(PREFIX)/bin/glibtoolize
  83. touch $@
  84. CLEAN_PKG += libtool
  85. DISTCLEAN_PKG += libtool-$(LIBTOOL_VERSION).tar.xz
  86. CLEAN_FILE += .libtool
  87. # GNU tar (with xz support)
  88. tar-$(TAR_VERSION).tar.bz2:
  89. $(call download,$(TAR_URL))
  90. tar: tar-$(TAR_VERSION).tar.bz2
  91. $(UNPACK)
  92. $(MOVE)
  93. .tar: tar
  94. (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
  95. touch $@
  96. CLEAN_PKG += tar
  97. DISTCLEAN_PKG += tar-$(TAR_VERSION).tar.bz2
  98. CLEAN_FILE += .tar
  99. # xz
  100. xz-$(XZ_VERSION).tar.bz2:
  101. $(call download,$(XZ_URL))
  102. xz: xz-$(XZ_VERSION).tar.bz2
  103. $(UNPACK)
  104. $(MOVE)
  105. .xz: xz
  106. (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
  107. touch $@
  108. CLEAN_PKG += xz
  109. DISTCLEAN_PKG += xz-$(XZ_VERSION).tar.bz2
  110. CLEAN_FILE += .xz
  111. # autoconf
  112. autoconf-$(AUTOCONF_VERSION).tar.gz:
  113. $(call download,$(AUTOCONF_URL))
  114. autoconf: autoconf-$(AUTOCONF_VERSION).tar.gz
  115. $(UNPACK)
  116. $(MOVE)
  117. .autoconf: autoconf .pkg-config
  118. (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
  119. touch $@
  120. CLEAN_FILE += .autoconf
  121. CLEAN_PKG += autoconf
  122. DISTCLEAN_PKG += autoconf-$(AUTOCONF_VERSION).tar.gz
  123. # automake
  124. automake-$(AUTOMAKE_VERSION).tar.gz:
  125. $(call download,$(AUTOMAKE_URL))
  126. automake: automake-$(AUTOMAKE_VERSION).tar.gz
  127. $(UNPACK)
  128. $(MOVE)
  129. .automake: automake .autoconf
  130. (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
  131. touch $@
  132. CLEAN_FILE += .automake
  133. CLEAN_PKG += automake
  134. DISTCLEAN_PKG += automake-$(AUTOMAKE_VERSION).tar.gz
  135. # m4
  136. m4-$(M4_VERSION).tar.gz:
  137. $(call download,$(M4_URL))
  138. m4: m4-$(M4_VERSION).tar.gz
  139. $(UNPACK)
  140. $(MOVE)
  141. .m4: m4
  142. (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
  143. touch $@
  144. CLEAN_FILE += .m4
  145. CLEAN_PKG += m4
  146. DISTCLEAN_PKG += m4-$(M4_VERSION).tar.gz
  147. # pkg-config
  148. pkg-config-$(PKGCFG_VERSION).tar.gz:
  149. $(call download,$(PKGCFG_URL))
  150. pkgconfig: pkg-config-$(PKGCFG_VERSION).tar.gz
  151. $(UNPACK)
  152. mv pkg-config-lite-$(PKGCFG_VERSION) pkg-config-$(PKGCFG_VERSION)
  153. $(MOVE)
  154. .pkg-config: pkgconfig
  155. (cd pkgconfig; ./configure --prefix=$(PREFIX) --disable-shared --enable-static && $(MAKE) && $(MAKE) install)
  156. touch $@
  157. CLEAN_FILE += .pkg-config
  158. CLEAN_PKG += pkgconfig
  159. DISTCLEAN_PKG += pkg-config-$(PKGCFG_VERSION).tar.gz
  160. # gas-preprocessor
  161. gas-preprocessor-$(GAS_VERSION).tar.gz:
  162. $(call download,$(GAS_URL))
  163. gas: gas-preprocessor-$(GAS_VERSION).tar.gz
  164. $(UNPACK)
  165. $(MOVE)
  166. .gas: gas
  167. mkdir -p $(PREFIX)/bin
  168. cp gas/gas-preprocessor.pl $(PREFIX)/build/bin/
  169. touch $@
  170. CLEAN_FILE += .gas
  171. CLEAN_PKG += gas
  172. DISTCLEAN_PKG += yuvi-gas-preprocessor-$(GAS_VERSION).tar.gz
  173. # GNU sed
  174. sed-$(SED_VERSION).tar.bz2:
  175. $(call download,$(SED_URL))
  176. sed: sed-$(SED_VERSION).tar.bz2
  177. $(UNPACK)
  178. $(MOVE)
  179. .sed: sed
  180. (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
  181. touch $@
  182. CLEAN_PKG += sed
  183. DISTCLEAN_PKG += sed-$(SED_VERSION).tar.bz2
  184. CLEAN_FILE += .sed
  185. # GNU gettext
  186. gettext-$(GETTEXT_VERSION).tar.gz:
  187. $(call download,$(GETTEXT_URL))
  188. gettext: gettext-$(GETTEXT_VERSION).tar.gz
  189. $(UNPACK)
  190. $(MOVE)
  191. .gettext: gettext
  192. (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
  193. touch $@
  194. CLEAN_FILE += .gettext
  195. CLEAN_PKG += gettext
  196. DISTCLEAN_PKG += gettext-$(CMAKE_VERSION).tar.gz
  197. #
  198. #
  199. #
  200. clean:
  201. rm -fr $(CLEAN_FILE) $(CLEAN_PKG) build/
  202. distclean: clean
  203. rm -fr $(DISTCLEAN_PKG)
  204. .PHONY: all clean distclean