build: introduce per feed repository support
[openwrt/svn-archive/archive.git] / package / system / opkg / Makefile
1 #
2 # Copyright (C) 2006-2014 OpenWrt.org
3 #
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
6
7 include $(TOPDIR)/rules.mk
8 include $(INCLUDE_DIR)/kernel.mk
9 include $(INCLUDE_DIR)/version.mk
10 include $(INCLUDE_DIR)/feeds.mk
11
12 PKG_NAME:=opkg
13 PKG_REV:=9c97d5ecd795709c8584e972bfdf3aee3a5b846d
14 PKG_VERSION:=$(PKG_REV)
15 PKG_RELEASE:=7
16
17 PKG_SOURCE_PROTO:=git
18 PKG_SOURCE_VERSION:=$(PKG_REV)
19 PKG_SOURCE_SUBDIR:=opkg-$(PKG_VERSION)
20 PKG_SOURCE_URL:=http://git.yoctoproject.org/git/opkg
21 PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
22 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
23 PKG_FIXUP:=autoreconf
24 PKG_REMOVE_FILES = autogen.sh aclocal.m4
25
26 PKG_LICENSE:=GPLv2
27 PKG_LICENSE_FILES:=COPYING
28
29 PKG_BUILD_PARALLEL:=1
30 HOST_BUILD_PARALLEL:=1
31 PKG_INSTALL:=1
32
33 include $(INCLUDE_DIR)/package.mk
34 include $(INCLUDE_DIR)/host-build.mk
35
36 define Package/opkg/Default
37 SECTION:=base
38 CATEGORY:=Base system
39 TITLE:=opkg package manager
40 MAINTAINER:=Jo-Philipp Wich <xm@subsignal.org>
41 URL:=http://wiki.openmoko.org/wiki/Opkg
42 endef
43
44 define Package/opkg/Default/description
45 Lightweight package management system
46 opkg is the opkg Package Management System, for handling
47 installation and removal of packages on a system. It can
48 recursively follow dependencies and download all packages
49 necessary to install a particular package.
50
51 opkg knows how to install both .ipk and .deb packages.
52 endef
53
54 define Package/opkg
55 $(call Package/opkg/Default)
56 VARIANT:=unsigned
57 endef
58
59 define Package/opkg/description
60 $(call Package/opkg/Default/description)
61 endef
62
63 define Package/opkg/conffiles
64 /etc/opkg.conf
65 endef
66
67
68 define Package/opkg-smime
69 $(call Package/opkg/Default)
70 TITLE+= (with S/MIME signature support)
71 DEPENDS+=+libopenssl
72 VARIANT:=smime
73 endef
74
75 define Package/opkg-smime/description
76 $(call Package/opkg/Default/description)
77
78 This package allows the Package index to be verified with S/MIME.
79 endef
80
81 Package/opkg-smime/conffiles = $(Package/opkg/conffiles)
82
83 TARGET_CFLAGS += $(if $(CONFIG_GCC_VERSION_4_3)$(CONFIG_GCC_VERSION_4_4),-Wno-array-bounds)
84 TARGET_CFLAGS += -ffunction-sections -fdata-sections
85 EXTRA_CFLAGS += $(TARGET_CPPFLAGS)
86
87 CONFIGURE_ARGS += \
88 --disable-curl \
89 --disable-gpg \
90 --with-opkgetcdir=/etc \
91 --with-opkglockfile=/var/lock/opkg.lock
92
93 ifeq ($(BUILD_VARIANT),smime)
94 CONFIGURE_ARGS += --enable-openssl --enable-sha256
95 endif
96
97 MAKE_FLAGS = \
98 CC="$(TARGET_CC)" \
99 DESTDIR="$(PKG_INSTALL_DIR)" \
100 HOST_CPU="$(PKGARCH)" \
101 LDFLAGS="-Wl,--gc-sections" \
102
103 define Package/opkg/Default/install
104 $(INSTALL_DIR) $(1)/usr/lib/opkg
105 $(INSTALL_DIR) $(1)/bin
106 $(INSTALL_DIR) $(1)/etc
107 $(INSTALL_DATA) ./files/opkg$(2).conf $(1)/etc/opkg.conf
108 ifeq ($(CONFIG_PER_FEED_REPO),)
109 echo "src/gz %n %U" >> $(1)/etc/opkg.conf
110 else
111 for d in base $(FEEDS_ENABLED); do \
112 echo "src/gz %n_$$$$d %U/$$$$d" >> $(1)/etc/opkg.conf; \
113 done
114 endif
115 $(VERSION_SED) $(1)/etc/opkg.conf
116 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/opkg-cl $(1)/bin/opkg
117 endef
118
119 Package/opkg/install = $(call Package/opkg/Default/install,$(1),)
120
121 define Package/opkg-smime/install
122 $(call Package/opkg/Default/install,$(1),-smime)
123 $(INSTALL_DIR) $(1)/etc/ssl/certs
124 $(if $(CONFIG_OPKGSMIME_CERT),$(INSTALL_DATA) $(call qstrip,$(CONFIG_OPKGSMIME_CERT)) $(1)/etc/ssl/certs/opkg.pem,)
125 endef
126
127 define Build/InstallDev
128 mkdir -p $(1)/usr/include
129 $(CP) $(PKG_INSTALL_DIR)/usr/include/libopkg $(1)/usr/include/
130 endef
131
132
133 HOST_CONFIGURE_ARGS+= \
134 --disable-curl \
135 --disable-gpg \
136 --with-opkgetcdir=/etc \
137 --with-opkglockfile=/tmp/opkg.lock
138
139 define Host/Compile
140 +$(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) CC="$(HOSTCC)" all
141 endef
142
143 define Host/Install
144 $(INSTALL_BIN) $(HOST_BUILD_DIR)/src/opkg-cl $(STAGING_DIR_HOST)/bin/opkg
145 endef
146
147 $(eval $(call BuildPackage,opkg))
148 $(eval $(call BuildPackage,opkg-smime))
149 $(eval $(call HostBuild))