Makefile 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. #
  2. # Copyright (C) 2006-2015 OpenWrt.org
  3. # Copyright (C) 2016 LEDE Project
  4. #
  5. # This is free software, licensed under the GNU General Public License v2.
  6. # See /LICENSE for more information.
  7. include $(TOPDIR)/rules.mk
  8. include $(INCLUDE_DIR)/kernel.mk
  9. include $(INCLUDE_DIR)/version.mk
  10. include $(INCLUDE_DIR)/feeds.mk
  11. PKG_NAME:=opkg
  12. PKG_REV:=9c97d5ecd795709c8584e972bfdf3aee3a5b846d
  13. PKG_VERSION:=$(PKG_REV)
  14. PKG_RELEASE:=13
  15. PKG_SOURCE_PROTO:=git
  16. PKG_SOURCE_VERSION:=$(PKG_REV)
  17. PKG_SOURCE_SUBDIR:=opkg-$(PKG_VERSION)
  18. PKG_SOURCE_URL:=http://git.yoctoproject.org/git/opkg
  19. PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
  20. PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
  21. PKG_FIXUP:=autoreconf
  22. PKG_REMOVE_FILES = autogen.sh aclocal.m4
  23. PKG_LICENSE:=GPL-2.0
  24. PKG_LICENSE_FILES:=COPYING
  25. PKG_MAINTAINER:=Jo-Philipp Wich <[email protected]>
  26. PKG_FLAGS := nonshared
  27. PKG_CONFIG_DEPENDS := CONFIG_SIGNED_PACKAGES
  28. PKG_BUILD_PARALLEL:=1
  29. HOST_BUILD_PARALLEL:=1
  30. PKG_INSTALL:=1
  31. include $(INCLUDE_DIR)/package.mk
  32. include $(INCLUDE_DIR)/host-build.mk
  33. define Package/opkg/Default
  34. SECTION:=base
  35. CATEGORY:=Base system
  36. TITLE:=opkg package manager
  37. DEPENDS:=+uclient-fetch
  38. URL:=http://wiki.openmoko.org/wiki/Opkg
  39. MENU:=1
  40. endef
  41. define Package/opkg/Default/description
  42. Lightweight package management system
  43. opkg is the opkg Package Management System, for handling
  44. installation and removal of packages on a system. It can
  45. recursively follow dependencies and download all packages
  46. necessary to install a particular package.
  47. opkg knows how to install both .ipk and .deb packages.
  48. endef
  49. define Package/opkg/config
  50. config OPKG_SUPPORT_MD5
  51. bool
  52. default n
  53. depends on PACKAGE_opkg
  54. prompt "Support reading old md5 hashes."
  55. help
  56. Old opkg used md5s, new uses sha. This options enables understanding both while prefering sha.
  57. endef
  58. define Package/opkg
  59. $(call Package/opkg/Default)
  60. VARIANT:=unsigned
  61. endef
  62. define Package/opkg/description
  63. $(call Package/opkg/Default/description)
  64. endef
  65. define Package/opkg/conffiles
  66. /etc/opkg.conf
  67. /etc/opkg/keys/
  68. /etc/opkg/customfeeds.conf
  69. endef
  70. define Package/opkg-smime
  71. $(call Package/opkg/Default)
  72. TITLE+= (with S/MIME signature support)
  73. DEPENDS+=+PACKAGE_opkg-smime:libopenssl
  74. VARIANT:=smime
  75. endef
  76. define Package/opkg-smime/description
  77. $(call Package/opkg/Default/description)
  78. This package allows the Package index to be verified with S/MIME.
  79. endef
  80. define Package/opkg-smime/config
  81. config OPKG_SMIME_SUPPORT_MD5
  82. bool
  83. default n
  84. depends on PACKAGE_opkg-smime
  85. prompt "Support reading old md5 hashes."
  86. help
  87. Old opkg used md5s, new uses sha. This options enables understanding both while prefering sha.
  88. endef
  89. Package/opkg-smime/conffiles = $(Package/opkg/conffiles)
  90. TARGET_CFLAGS += -ffunction-sections -fdata-sections
  91. EXTRA_CFLAGS += $(TARGET_CPPFLAGS)
  92. CONFIGURE_ARGS += \
  93. --disable-curl \
  94. --disable-gpg \
  95. --enable-sha256 \
  96. --with-opkgetcdir=/etc \
  97. --with-opkglockfile=/var/lock/opkg.lock
  98. ifeq ($(BUILD_VARIANT),smime)
  99. CONFIGURE_ARGS += --enable-openssl --disable-usign
  100. ifeq ($(CONFIG_OPKG_SMIME_SUPPORT_MD5),y)
  101. CONFIGURE_ARGS += --enable-md5
  102. else
  103. CONFIGURE_ARGS += --disable-md5
  104. endif
  105. else
  106. ifndef CONFIG_SIGNED_PACKAGES
  107. CONFIGURE_ARGS += --disable-usign
  108. endif
  109. ifeq ($(CONFIG_OPKG_SUPPORT_MD5),y)
  110. CONFIGURE_ARGS += --enable-md5
  111. else
  112. CONFIGURE_ARGS += --disable-md5
  113. endif
  114. endif
  115. MAKE_FLAGS = \
  116. CC="$(TARGET_CC)" \
  117. DESTDIR="$(PKG_INSTALL_DIR)" \
  118. HOST_CPU="$(PKGARCH)" \
  119. LDFLAGS="-Wl,--gc-sections" \
  120. define Package/opkg/Default/install
  121. $(INSTALL_DIR) $(1)/usr/lib/opkg
  122. $(INSTALL_DIR) $(1)/bin
  123. $(INSTALL_DIR) $(1)/etc/opkg
  124. $(INSTALL_DIR) $(1)/etc/uci-defaults
  125. $(INSTALL_DATA) ./files/customfeeds.conf $(1)/etc/opkg/customfeeds.conf
  126. $(INSTALL_DATA) ./files/opkg$(2).conf $(1)/etc/opkg.conf
  127. $(call FeedSourcesAppend,$(1)/etc/opkg/distfeeds.conf)
  128. $(VERSION_SED) $(1)/etc/opkg/distfeeds.conf
  129. $(INSTALL_BIN) ./files/20_migrate-feeds $(1)/etc/uci-defaults/
  130. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/opkg-cl $(1)/bin/opkg
  131. endef
  132. define Package/opkg/install
  133. $(call Package/opkg/Default/install,$(1),)
  134. ifneq ($(CONFIG_SIGNED_PACKAGES),)
  135. echo "option check_signature 1" >> $(1)/etc/opkg.conf
  136. endif
  137. mkdir $(1)/usr/sbin
  138. $(INSTALL_BIN) ./files/opkg-key $(1)/usr/sbin/
  139. endef
  140. define Package/opkg-smime/install
  141. $(call Package/opkg/Default/install,$(1),-smime)
  142. $(INSTALL_DIR) $(1)/etc/ssl/certs
  143. $(if $(CONFIG_OPKGSMIME_CERT),$(INSTALL_DATA) $(call qstrip,$(CONFIG_OPKGSMIME_CERT)) $(1)/etc/ssl/certs/opkg.pem,)
  144. endef
  145. define Build/InstallDev
  146. mkdir -p $(1)/usr/include
  147. $(CP) $(PKG_INSTALL_DIR)/usr/include/libopkg $(1)/usr/include/
  148. endef
  149. HOST_CONFIGURE_ARGS+= \
  150. --disable-curl \
  151. --disable-gpg \
  152. --enable-sha256 \
  153. --with-opkgetcdir=/etc \
  154. --with-opkglockfile=/tmp/opkg.lock
  155. define Host/Compile
  156. +$(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) CC="$(HOSTCC)" all
  157. endef
  158. define Host/Install
  159. $(INSTALL_BIN) $(HOST_BUILD_DIR)/src/opkg-cl $(STAGING_DIR_HOST)/bin/opkg
  160. endef
  161. $(eval $(call BuildPackage,opkg))
  162. $(eval $(call BuildPackage,opkg-smime))
  163. $(eval $(call HostBuild))