openssl: fix target definition for x86_64 (#18182)
[openwrt.git] / package / libs / openssl / 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
8 include $(TOPDIR)/rules.mk
9
10 PKG_NAME:=openssl
11 PKG_VERSION:=1.0.1j
12 PKG_RELEASE:=1
13 PKG_USE_MIPS16:=0
14
15 PKG_BUILD_PARALLEL:=1
16
17 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
18 PKG_SOURCE_URL:=http://www.openssl.org/source/ \
19         ftp://ftp.funet.fi/pub/crypt/mirrors/ftp.openssl.org/source \
20         ftp://ftp.sunet.se/pub/security/tools/net/openssl/source/
21 PKG_MD5SUM:=f7175c9cd3c39bb1907ac8bba9df8ed3
22
23 PKG_LICENSE:=SSLEAY OPENSSL
24 PKG_LICENSE_FILES:=LICENSE
25 PKG_BUILD_DEPENDS:=ocf-crypto-headers
26 PKG_CONFIG_DEPENDS:=CONFIG_OPENSSL_ENGINE_CRYPTO CONFIG_OPENSSL_ENGINE_DIGEST \
27         CONFIG_OPENSSL_WITH_EC CONFIG_OPENSSL_WITH_EC2M
28
29 include $(INCLUDE_DIR)/package.mk
30
31 ifneq ($(CONFIG_CCACHE),)
32 HOSTCC=$(HOSTCC_NOCACHE)
33 HOSTCXX=$(HOSTCXX_NOCACHE)
34 endif
35
36 define Package/openssl/Default
37   TITLE:=Open source SSL toolkit
38   URL:=http://www.openssl.org/
39 endef
40
41 define Package/libopenssl/config
42 source "$(SOURCE)/Config.in"
43 endef
44
45 define Package/openssl/Default/description
46 The OpenSSL Project is a collaborative effort to develop a robust,
47 commercial-grade, full-featured, and Open Source toolkit implementing the Secure
48 Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) protocols as well
49 as a full-strength general purpose cryptography library.
50 endef
51
52 define Package/libopenssl
53 $(call Package/openssl/Default)
54   SECTION:=libs
55   SUBMENU:=SSL
56   CATEGORY:=Libraries
57   DEPENDS:=+zlib
58   TITLE+= (libraries)
59   ABI_VERSION:=$(PKG_VERSION)
60   MENU:=1
61 endef
62
63 define Package/libopenssl/description
64 $(call Package/openssl/Default/description)
65 This package contains the OpenSSL shared libraries, needed by other programs.
66 endef
67
68 define Package/openssl-util
69   $(call Package/openssl/Default)
70   SECTION:=utils
71   CATEGORY:=Utilities
72   DEPENDS:=+libopenssl
73   TITLE+= (utility)
74 endef
75
76 define Package/openssl-util/conffiles
77 /etc/ssl/openssl.cnf
78 endef
79
80 define Package/openssl-util/description
81 $(call Package/openssl/Default/description)
82 This package contains the OpenSSL command-line utility.
83 endef
84
85
86 OPENSSL_NO_CIPHERS:= no-idea no-md2 no-mdc2 no-rc5 no-sha0 no-smime \
87         no-aes192 no-camellia no-ans1 no-krb5
88 OPENSSL_OPTIONS:= shared no-err no-hw zlib-dynamic no-sse2
89
90 ifdef CONFIG_OPENSSL_ENGINE_CRYPTO
91   OPENSSL_OPTIONS += -DHAVE_CRYPTODEV
92   ifdef CONFIG_OPENSSL_ENGINE_DIGEST
93     OPENSSL_OPTIONS += -DUSE_CRYPTODEV_DIGESTS
94   endif
95 else
96   OPENSSL_OPTIONS += no-engines
97 endif
98
99 ifndef CONFIG_OPENSSL_WITH_EC
100   OPENSSL_OPTIONS += no-ec
101 endif
102
103 ifndef CONFIG_OPENSSL_WITH_EC2M
104   OPENSSL_OPTIONS += no-ec2m
105 endif
106
107 ifeq ($(CONFIG_x86_64),y)
108   OPENSSL_TARGET:=linux-x86_64-openwrt
109   OPENSSL_MAKEFLAGS += LIBDIR=lib
110 else
111   OPENSSL_OPTIONS+=no-sse2
112   ifeq ($(CONFIG_mips)$(CONFIG_mipsel),y)
113     OPENSSL_TARGET:=linux-mips-openwrt
114   else
115     OPENSSL_TARGET:=linux-generic-openwrt
116     OPENSSL_OPTIONS+=no-perlasm
117   endif
118 endif
119
120 STAMP_CONFIGURED := $(STAMP_CONFIGURED)_$(subst $(space),_,$(OPENSSL_OPTIONS))
121
122 define Build/Configure
123         [ -f $(STAMP_CONFIGURED) ] || { \
124                 rm -f $(PKG_BUILD_DIR)/*.so.* $(PKG_BUILD_DIR)/*.a; \
125                 find $(PKG_BUILD_DIR) -name \*.o | xargs rm -f; \
126         }
127         (cd $(PKG_BUILD_DIR); \
128                 ./Configure $(OPENSSL_TARGET) \
129                         --prefix=/usr \
130                         --openssldir=/etc/ssl \
131                         $(TARGET_CPPFLAGS) \
132                         $(TARGET_LDFLAGS) -ldl \
133                         -DOPENSSL_SMALL_FOOTPRINT \
134                         $(OPENSSL_NO_CIPHERS) \
135                         $(OPENSSL_OPTIONS) \
136         )
137         # XXX: OpenSSL "make depend" will look for installed headers before its own,
138         # so remove installed stuff first
139         -$(SUBMAKE) -j1 clean-staging
140         +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
141                 MAKEDEPPROG="$(TARGET_CROSS)gcc" \
142                 OPENWRT_OPTIMIZATION_FLAGS="$(TARGET_CFLAGS)" \
143                 $(OPENSSL_MAKEFLAGS) \
144                 depend
145 endef
146
147 TARGET_CFLAGS += $(FPIC)
148
149 define Build/Compile
150         +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
151                 CC="$(TARGET_CC)" \
152                 ASFLAGS="$(TARGET_ASFLAGS) -c" \
153                 AR="$(TARGET_CROSS)ar r" \
154                 RANLIB="$(TARGET_CROSS)ranlib" \
155                 OPENWRT_OPTIMIZATION_FLAGS="$(TARGET_CFLAGS)" \
156                 $(OPENSSL_MAKEFLAGS) \
157                 all
158         +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
159                 CC="$(TARGET_CC)" \
160                 ASFLAGS="$(TARGET_ASFLAGS) -c" \
161                 AR="$(TARGET_CROSS)ar r" \
162                 RANLIB="$(TARGET_CROSS)ranlib" \
163                 OPENWRT_OPTIMIZATION_FLAGS="$(TARGET_CFLAGS)" \
164                 $(OPENSSL_MAKEFLAGS) \
165                 build-shared
166         # Work around openssl build bug to link libssl.so with libcrypto.so.
167         -rm $(PKG_BUILD_DIR)/libssl.so.*.*.*
168         +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
169                 CC="$(TARGET_CC)" \
170                 OPENWRT_OPTIMIZATION_FLAGS="$(TARGET_CFLAGS)" \
171                 $(OPENSSL_MAKEFLAGS) \
172                 do_linux-shared
173         $(MAKE) -C $(PKG_BUILD_DIR) \
174                 CC="$(TARGET_CC)" \
175                 INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \
176                 $(OPENSSL_MAKEFLAGS) \
177                 install
178 endef
179
180 define Build/InstallDev
181         $(INSTALL_DIR) $(1)/usr/include
182         $(CP) $(PKG_INSTALL_DIR)/usr/include/openssl $(1)/usr/include/
183         $(INSTALL_DIR) $(1)/usr/lib/
184         $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{crypto,ssl}.{a,so*} $(1)/usr/lib/
185         $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
186         $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/{openssl,libcrypto,libssl}.pc $(1)/usr/lib/pkgconfig/
187         [ -n "$(TARGET_LDFLAGS)" ] && $(SED) 's#$(TARGET_LDFLAGS)##g' $(1)/usr/lib/pkgconfig/{openssl,libcrypto,libssl}.pc || true
188 endef
189
190 define Package/libopenssl/install
191         $(INSTALL_DIR) $(1)/usr/lib
192         $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libcrypto.so.* $(1)/usr/lib/
193         $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libssl.so.* $(1)/usr/lib/
194 endef
195
196 define Package/openssl-util/install
197         $(INSTALL_DIR) $(1)/etc/ssl
198         $(CP) $(PKG_INSTALL_DIR)/etc/ssl/openssl.cnf $(1)/etc/ssl/
199         $(INSTALL_DIR) $(1)/etc/ssl/certs
200         $(INSTALL_DIR) $(1)/etc/ssl/private
201         chmod 0700 $(1)/etc/ssl/private
202         $(INSTALL_DIR) $(1)/usr/bin
203         $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/openssl $(1)/usr/bin/
204 endef
205
206 $(eval $(call BuildPackage,libopenssl))
207 $(eval $(call BuildPackage,openssl-util))