openssl: detect configuration changes and clean build tree accordingly (fixes #15067)
[openwrt.git] / package / libs / openssl / Makefile
index 049aad4..38679ac 100644 (file)
@@ -9,7 +9,10 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=openssl
 PKG_VERSION:=1.0.1e
-PKG_RELEASE:=1
+PKG_RELEASE:=2
+PKG_USE_MIPS16:=0
+
+PKG_BUILD_PARALLEL:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.openssl.org/source/ \
@@ -20,7 +23,8 @@ PKG_MD5SUM:=66bf6f10f060d561929de96f9dfe5b8c
 PKG_LICENSE:=SSLEAY OPENSSL
 PKG_LICENSE_FILES:=LICENSE
 PKG_BUILD_DEPENDS:=ocf-crypto-headers
-PKG_CONFIG_DEPENDS:=CONFIG_OPENSSL_ENGINE_CRYPTO CONFIG_OPENSSL_ENGINE_DIGEST
+PKG_CONFIG_DEPENDS:=CONFIG_OPENSSL_ENGINE_CRYPTO CONFIG_OPENSSL_ENGINE_DIGEST \
+       CONFIG_OPENSSL_WITH_EC CONFIG_OPENSSL_WITH_EC2M
 
 include $(INCLUDE_DIR)/package.mk
 
@@ -74,8 +78,8 @@ endef
 
 
 OPENSSL_NO_CIPHERS:= no-idea no-md2 no-mdc2 no-rc5 no-sha0 no-smime \
-       no-rmd160 no-aes192 no-ripemd no-camellia no-ans1 no-krb5
-OPENSSL_OPTIONS:= shared no-ec no-err no-hw no-threads zlib-dynamic no-sse2
+       no-aes192 no-camellia no-ans1 no-krb5
+OPENSSL_OPTIONS:= shared no-err no-hw zlib-dynamic no-sse2
 
 ifdef CONFIG_OPENSSL_ENGINE_CRYPTO
   OPENSSL_OPTIONS += -DHAVE_CRYPTODEV
@@ -86,6 +90,14 @@ else
   OPENSSL_OPTIONS += no-engines
 endif
 
+ifndef CONFIG_OPENSSL_WITH_EC
+  OPENSSL_OPTIONS += no-ec
+endif
+
+ifndef CONFIG_OPENSSL_WITH_EC2M
+  OPENSSL_OPTIONS += no-ec2m
+endif
+
 ifeq ($(CONFIG_x86_64),y)
   OPENSSL_TARGET:=linux-x86_64
 else
@@ -98,7 +110,13 @@ else
   endif
 endif
 
+STAMP_CONFIGURED := $(STAMP_CONFIGURED)_$(subst $(space),_,$(OPENSSL_OPTIONS))
+
 define Build/Configure
+       [ -f $(STAMP_CONFIGURED) ] || { \
+               rm -f $(PKG_BUILD_DIR)/*.so.* $(PKG_BUILD_DIR)/*.a; \
+               find $(PKG_BUILD_DIR) -name \*.o | xargs rm -f; \
+       }
        (cd $(PKG_BUILD_DIR); \
                ./Configure $(OPENSSL_TARGET) \
                        --prefix=/usr \
@@ -109,20 +127,20 @@ define Build/Configure
                        $(OPENSSL_NO_CIPHERS) \
                        $(OPENSSL_OPTIONS) \
        )
-endef
-
-TARGET_CFLAGS += $(FPIC)
-
-define Build/Compile
        # XXX: OpenSSL "make depend" will look for installed headers before its own,
        # so remove installed stuff first
        -$(SUBMAKE) -j1 clean-staging
-       $(MAKE) -C $(PKG_BUILD_DIR) \
+       +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
                MAKEDEPPROG="$(TARGET_CROSS)gcc" \
                OPENWRT_OPTIMIZATION_FLAGS="$(TARGET_CFLAGS)" \
                $(OPENSSL_MAKEFLAGS) \
                depend
-       $(_SINGLE)$(MAKE) -C $(PKG_BUILD_DIR) \
+endef
+
+TARGET_CFLAGS += $(FPIC)
+
+define Build/Compile
+       +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
                CC="$(TARGET_CC)" \
                ASFLAGS="$(TARGET_ASFLAGS) -c" \
                AR="$(TARGET_CROSS)ar r" \
@@ -130,7 +148,7 @@ define Build/Compile
                OPENWRT_OPTIMIZATION_FLAGS="$(TARGET_CFLAGS)" \
                $(OPENSSL_MAKEFLAGS) \
                all
-       $(MAKE) -C $(PKG_BUILD_DIR) \
+       +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
                CC="$(TARGET_CC)" \
                ASFLAGS="$(TARGET_ASFLAGS) -c" \
                AR="$(TARGET_CROSS)ar r" \
@@ -140,7 +158,7 @@ define Build/Compile
                build-shared
        # Work around openssl build bug to link libssl.so with libcrypto.so.
        -rm $(PKG_BUILD_DIR)/libssl.so.*.*.*
-       $(MAKE) -C $(PKG_BUILD_DIR) \
+       +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
                CC="$(TARGET_CC)" \
                OPENWRT_OPTIMIZATION_FLAGS="$(TARGET_CFLAGS)" \
                $(OPENSSL_MAKEFLAGS) \