bump version
[buildroot.git] / package / openssl / openssl.mk
blob3ffa0d84f8e754a080bac4a37b80ace693b5b190
1 #############################################################
3 # openssl
5 #############################################################
7 # TARGETS
8 OPENSSL_VERSION:=0.9.8i
9 OPENSSL_SITE:=http://www.openssl.org/source
10 OPENSSL_SOURCE:=openssl-$(OPENSSL_VERSION).tar.gz
11 OPENSSL_CAT:=$(ZCAT)
12 OPENSSL_DIR:=$(BUILD_DIR)/openssl-$(OPENSSL_VERSION)
14 #Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [enable-montasm] [no-asm] [no-dso] [no-krb5] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--test-sanity] os/compiler[:flags]
16 OPENSSL_TARGET_ARCH:=
17 ifeq ($(BR2_i386),y)
18 ifneq ($(ARCH),i386)
19 OPENSSL_TARGET_ARCH:=i386-$(ARCH)
20 OPENSSL_TARGET_ARCH:=generic32
21 endif
22 ifeq ($(ARCH),i686)
23 OPENSSL_TARGET_ARCH:=i386-i686/cmov
24 OPENSSL_TARGET_ARCH:=elf
25 endif
26 endif
28 ifeq ($(BR2_alpha),y)
29 OPENSSL_TARGET_ARCH:=linux-alpha-gcc
30 endif
32 ifeq ($(OPENSSL_TARGET_ARCH),)
33 OPENSSL_TARGET_ARCH:=$(ARCH)
34 endif
36 OPENSSL_CFLAGS:= -DTERMIO
37 OPENSSL_CFLAGS+=-DOPENSSL_NO_KRB5 -DOPENSSL_NO_IDEA -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5
38 ifeq ($(BR2_PTHREADS_NONE),y)
39 OPENSSL_THREADS=no-threads
40 else
41 OPENSSL_THREADS=threads
42 OPENSSL_CFLAGS+=-D_REENTRANT
43 endif
45 ifeq ($(BR2_ENDIAN),"BIG")
46 OPENSSL_CFLAGS+=-DB_ENDIAN
47 else
48 OPENSSL_CFLAGS+=-DL_ENDIAN
49 endif
50 ifeq ($(BR2_PACKAGE_ZLIB),y)
51 OPENSSL_OPTS+=zlib-dynamic
52 OPENSSL_EXT_LIBS+=-lz
53 OPENSSL_PREREQ+=zlib
54 else
55 OPENSSL_OPTS+=no-zlib no-zlib-dynamic
56 endif
58 $(DL_DIR)/$(OPENSSL_SOURCE):
59 $(WGET) -P $(DL_DIR) $(OPENSSL_SITE)/$(OPENSSL_SOURCE)
61 openssl-unpack: $(OPENSSL_DIR)/.unpacked
62 $(OPENSSL_DIR)/.unpacked: $(DL_DIR)/$(OPENSSL_SOURCE)
63 $(OPENSSL_CAT) $(DL_DIR)/$(OPENSSL_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
64 toolchain/patch-kernel.sh $(OPENSSL_DIR) package/openssl/ openssl-$(OPENSSL_VERSION)\*.patch
65 # sigh... hit perl script with a clue bait
66 # grumble.. and of course make sure to escape any '/' in CFLAGS
67 $(SED) 's,/CFLAG=,/CFLAG= $(TARGET_SOFT_FLOAT) ,g' \
68 $(OPENSSL_DIR)/Configure
69 $(SED) '/CFLAG=/s,/;, $(shell echo '$(TARGET_CFLAGS) $(OPENSSL_CFLAGS)' | sed -e 's/\//\\\\\//g')/;,' \
70 $(OPENSSL_DIR)/Configure
71 $(SED) '/linux-uclibc/s,gcc:,$(TARGET_CC) $(TARGET_CFLAGS):,' \
72 -e '/linux-uclibc/s,:ranlib:,:$(TARGET_RANLIB):,' \
73 -e '/linux-uclibc/s,:-ldl:,:$(TARGET_LDFLAGS) -ldl $(OPENSSL_EXT_LIBS):,' \
74 $(OPENSSL_DIR)/Configure
75 touch $@
77 $(OPENSSL_DIR)/Makefile: $(OPENSSL_DIR)/.unpacked
78 (cd $(OPENSSL_DIR); \
79 CFLAGS="$(TARGET_CFLAGS) $(OPENSSL_CFLAGS)" \
80 RANLIB="$(TARGET_RANLIB)" \
81 PATH=$(TARGET_PATH) \
82 ./Configure linux-uclibc --prefix=/ --openssldir=/lib/ssl \
83 -L$(STAGING_DIR)/usr/lib -ldl \
84 -I$(STAGING_DIR)/usr/include \
85 $(OPENSSL_OPTS) \
86 $(OPENSSL_THREADS) \
87 shared no-idea no-mdc2 no-rc5)
89 $(OPENSSL_DIR)/apps/openssl: $(OPENSSL_DIR)/Makefile
90 $(MAKE1) -C $(OPENSSL_DIR) all build-shared
91 # Work around openssl build bug to link libssl.so with libcrypto.so.
92 -rm $(OPENSSL_DIR)/libssl.so.*.*.*
93 $(MAKE1) -C $(OPENSSL_DIR) do_linux-shared
95 $(STAGING_DIR)/usr/lib/libcrypto.a: $(OPENSSL_DIR)/apps/openssl
96 $(MAKE1) INSTALL_PREFIX="$(STAGING_DIR)/usr" \
97 INSTALLTOP=/ ENGINESDIR=/lib/ssl/engines \
98 -C $(OPENSSL_DIR) install
99 cp -dpf $(OPENSSL_DIR)/libcrypto.so* $(STAGING_DIR)/usr/lib/
100 chmod a-x $(STAGING_DIR)/usr/lib/libcrypto.so.0.9.8
101 (cd $(STAGING_DIR)/usr/lib; \
102 ln -fs libcrypto.so.0.9.8 libcrypto.so; \
103 ln -fs libcrypto.so.0.9.8 libcrypto.so.0; \
105 cp -dpf $(OPENSSL_DIR)/libssl.so* $(STAGING_DIR)/usr/lib/
106 chmod a-x $(STAGING_DIR)/usr/lib/libssl.so.0.9.8
107 (cd $(STAGING_DIR)/usr/lib; \
108 ln -fs libssl.so.0.9.8 libssl.so; \
109 ln -fs libssl.so.0.9.8 libssl.so.0; \
111 touch -c $@
113 $(TARGET_DIR)/usr/lib/libcrypto.so.0.9.8: $(STAGING_DIR)/usr/lib/libcrypto.a
114 $(INSTALL) -d $(@D)
115 $(INSTALL) -m 0755 -t $(@D) $(STAGING_DIR)/usr/lib/libcrypto.so*
116 $(INSTALL) -m 0755 -t $(@D) $(STAGING_DIR)/usr/lib/libssl.so*
117 #cp -fa $(STAGING_DIR)/bin/openssl $(TARGET_DIR)/bin/
118 -$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/libssl.so.0.9.8
119 -$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/libcrypto.so.0.9.8
121 $(TARGET_DIR)/usr/lib/libssl.a: $(STAGING_DIR)/usr/lib/libcrypto.a
122 ifneq ($(BR2_HAVE_HEADERS),y)
123 $(INSTALL) -d $(TARGET_DIR)/usr/include
124 cp -rpfR $(STAGING_DIR)/usr/include/openssl $(TARGET_DIR)/usr/include/
125 endif
126 $(INSTALL) -D -m 0644 $(STAGING_DIR)/usr/lib/libssl.a $@
127 $(INSTALL) -m 0644 $(STAGING_DIR)/usr/lib/libcrypto.a $(TARGET_DIR)/usr/lib/libcrypto.a
128 touch -c $@
130 openssl-headers: $(TARGET_DIR)/usr/lib/libssl.a
132 openssl: $(OPENSSL_PREREQ) $(TARGET_DIR)/usr/lib/libcrypto.so.0.9.8
134 openssl-source: $(DL_DIR)/$(OPENSSL_SOURCE)
136 openssl-clean:
137 -$(MAKE) -C $(OPENSSL_DIR) clean
138 rm -f $(STAGING_DIR)/usr/bin/openssl $(TARGET_DIR)/usr/bin/openssl
139 rm -f $(STAGING_DIR)/usr/lib/libcrypto.* $(TARGET_DIR)/usr/lib/libcrypto.*
140 rm -f $(STAGING_DIR)/usr/lib/libssl.* $(TARGET_DIR)/usr/lib/libssl.*
141 rm -rf $(STAGING_DIR)/usr/include/openssl $(TARGET_DIR)/usr/include/openssl
142 rm -rf $(STAGING_DIR)/usr/lib/ssl $(TARGET_DIR)/usr/lib/ssl
143 rm -f $(STAGING_DIR)/usr/lib/pkgconfig/libssl.pc \
144 $(STAGING_DIR)/usr/lib/pkgconfig/openssl.pc \
145 $(STAGING_DIR)/usr/lib/pkgconfig/libcrypto.pc
146 rm -f $(TARGET_DIR)/usr/lib/pkgconfig/libssl.pc \
147 $(TARGET_DIR)/usr/lib/pkgconfig/openssl.pc \
148 $(TARGET_DIR)/usr/lib/pkgconfig/libcrypto.pc \
149 $(TARGET_DIR)/usr/include/openssl
151 openssl-dirclean:
152 rm -rf $(OPENSSL_DIR)
153 #############################################################
155 # Toplevel Makefile options
157 #############################################################
158 ifeq ($(BR2_PACKAGE_OPENSSL),y)
159 TARGETS+=openssl
160 endif
161 ifeq ($(BR2_PACKAGE_OPENSSL_TARGET_HEADERS),y)
162 TARGETS+=openssl-headers
163 endif