package: flag essential components as nonshared
[oweals/openwrt.git] / package / system / opkg / Makefile
1 #
2 # Copyright (C) 2006-2015 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:=12
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:=GPL-2.0
27 PKG_LICENSE_FILES:=COPYING
28
29 PKG_MAINTAINER:=Jo-Philipp Wich <jow@openwrt.org>
30
31 PKG_FLAGS := nonshared
32 PKG_CONFIG_DEPENDS := CONFIG_SIGNED_PACKAGES
33
34 PKG_BUILD_PARALLEL:=1
35 HOST_BUILD_PARALLEL:=1
36 PKG_INSTALL:=1
37
38 include $(INCLUDE_DIR)/package.mk
39 include $(INCLUDE_DIR)/host-build.mk
40
41 define Package/opkg/Default
42   SECTION:=base
43   CATEGORY:=Base system
44   TITLE:=opkg package manager
45   DEPENDS:=+uclient-fetch
46   URL:=http://wiki.openmoko.org/wiki/Opkg
47   MENU:=1
48 endef
49
50 define Package/opkg/Default/description
51   Lightweight package management system
52   opkg is the opkg Package Management System, for handling
53   installation and removal of packages on a system. It can
54   recursively follow dependencies and download all packages
55   necessary to install a particular package.
56
57   opkg knows how to install both .ipk and .deb packages.
58 endef
59
60 define Package/opkg/config
61 config OPKG_SUPPORT_MD5
62   bool
63   default n
64   depends on PACKAGE_opkg
65   prompt "Support reading old md5 hashes."
66   help
67         Old opkg used md5s, new uses sha. This options enables understanding both while prefering sha.
68 endef
69
70 define Package/opkg
71   $(call Package/opkg/Default)
72   VARIANT:=unsigned
73 endef
74
75 define Package/opkg/description
76   $(call Package/opkg/Default/description)
77 endef
78
79 define Package/opkg/conffiles
80 /etc/opkg.conf
81 /etc/opkg/keys/
82 /etc/opkg/customfeeds.conf
83 endef
84
85
86 define Package/opkg-smime
87   $(call Package/opkg/Default)
88   TITLE+= (with S/MIME signature support)
89   DEPENDS+=+PACKAGE_opkg-smime:libopenssl
90   VARIANT:=smime
91 endef
92
93 define Package/opkg-smime/description
94   $(call Package/opkg/Default/description)
95
96   This package allows the Package index to be verified with S/MIME.
97 endef
98
99 define Package/opkg-smime/config
100 config OPKG_SMIME_SUPPORT_MD5
101   bool
102   default n
103   depends on PACKAGE_opkg-smime
104   prompt "Support reading old md5 hashes."
105   help
106         Old opkg used md5s, new uses sha. This options enables understanding both while prefering sha.
107 endef
108
109 Package/opkg-smime/conffiles = $(Package/opkg/conffiles)
110
111 TARGET_CFLAGS += -ffunction-sections -fdata-sections
112 EXTRA_CFLAGS += $(TARGET_CPPFLAGS)
113
114 CONFIGURE_ARGS += \
115         --disable-curl \
116         --disable-gpg \
117         --enable-sha256 \
118         --with-opkgetcdir=/etc \
119         --with-opkglockfile=/var/lock/opkg.lock
120
121 ifeq ($(BUILD_VARIANT),smime)
122   CONFIGURE_ARGS += --enable-openssl --disable-usign
123   ifeq ($(CONFIG_OPKG_SMIME_SUPPORT_MD5),y)
124     CONFIGURE_ARGS += --enable-md5
125   else
126     CONFIGURE_ARGS += --disable-md5
127   endif
128 else
129   ifndef CONFIG_SIGNED_PACKAGES
130     CONFIGURE_ARGS += --disable-usign
131   endif
132   ifeq ($(CONFIG_OPKG_SUPPORT_MD5),y)
133     CONFIGURE_ARGS += --enable-md5
134   else
135     CONFIGURE_ARGS += --disable-md5
136   endif
137 endif
138
139 MAKE_FLAGS = \
140                 CC="$(TARGET_CC)" \
141                 DESTDIR="$(PKG_INSTALL_DIR)" \
142                 HOST_CPU="$(PKGARCH)" \
143                 LDFLAGS="-Wl,--gc-sections" \
144
145 define Package/opkg/Default/install
146         $(INSTALL_DIR) $(1)/usr/lib/opkg
147         $(INSTALL_DIR) $(1)/bin
148         $(INSTALL_DIR) $(1)/etc/opkg
149         $(INSTALL_DIR) $(1)/etc/uci-defaults
150         $(INSTALL_DATA) ./files/customfeeds.conf $(1)/etc/opkg/customfeeds.conf
151         $(INSTALL_DATA) ./files/opkg$(2).conf $(1)/etc/opkg.conf
152         $(call FeedSourcesAppend,$(1)/etc/opkg/distfeeds.conf)
153         $(VERSION_SED) $(1)/etc/opkg/distfeeds.conf
154         $(INSTALL_BIN) ./files/20_migrate-feeds $(1)/etc/uci-defaults/
155         $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/opkg-cl $(1)/bin/opkg
156 endef
157
158 define Package/opkg/install
159         $(call Package/opkg/Default/install,$(1),)
160   ifneq ($(CONFIG_SIGNED_PACKAGES),)
161         echo "option check_signature 1" >> $(1)/etc/opkg.conf
162   endif
163         mkdir $(1)/usr/sbin
164         $(INSTALL_BIN) ./files/opkg-key $(1)/usr/sbin/
165 endef
166
167 define Package/opkg-smime/install
168         $(call Package/opkg/Default/install,$(1),-smime)
169         $(INSTALL_DIR) $(1)/etc/ssl/certs
170         $(if $(CONFIG_OPKGSMIME_CERT),$(INSTALL_DATA) $(call qstrip,$(CONFIG_OPKGSMIME_CERT)) $(1)/etc/ssl/certs/opkg.pem,)
171 endef
172
173 define Build/InstallDev
174         mkdir -p $(1)/usr/include
175         $(CP) $(PKG_INSTALL_DIR)/usr/include/libopkg $(1)/usr/include/
176 endef
177
178
179 HOST_CONFIGURE_ARGS+= \
180         --disable-curl \
181         --disable-gpg \
182         --enable-sha256 \
183         --with-opkgetcdir=/etc \
184         --with-opkglockfile=/tmp/opkg.lock
185
186 define Host/Compile
187         +$(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) CC="$(HOSTCC)" all
188 endef
189
190 define Host/Install
191         $(INSTALL_BIN) $(HOST_BUILD_DIR)/src/opkg-cl $(STAGING_DIR_HOST)/bin/opkg
192 endef
193
194 $(eval $(call BuildPackage,opkg))
195 $(eval $(call BuildPackage,opkg-smime))
196 $(eval $(call HostBuild))