################################################################################
#
# cryptopp
#
################################################################################

CRYPTOPP_VERSION = 8.9.0
CRYPTOPP_SOURCE = cryptopp$(subst .,,$(CRYPTOPP_VERSION)).zip
CRYPTOPP_SITE = https://cryptopp.com
CRYPTOPP_LICENSE = BSL-1.0, BSD-3-Clause (CRYPTOGAMS), Public domain (ChaCha SSE2 and AVX)
CRYPTOPP_LICENSE_FILES = License.txt
CRYPTOPP_CPE_ID_VENDOR = cryptopp
CRYPTOPP_CPE_ID_PRODUCT = crypto\+\+
CRYPTOPP_INSTALL_STAGING = YES

define HOST_CRYPTOPP_EXTRACT_CMDS
	$(UNZIP) $(HOST_CRYPTOPP_DL_DIR)/$(CRYPTOPP_SOURCE) -d $(@D)
endef

HOST_CRYPTOPP_CXXFLAGS = $(HOST_CFLAGS) -fPIC

# _mm256_broadcastsi128_si256 has been added only in gcc 4.9
ifneq ($(BR2_HOST_GCC_AT_LEAST_4_9),y)
HOST_CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_AVX2
endif

HOST_CRYPTOPP_MAKE_OPTS = \
	$(HOST_CONFIGURE_OPTS) \
	CXXFLAGS="$(HOST_CRYPTOPP_CXXFLAGS)"

define HOST_CRYPTOPP_BUILD_CMDS
	$(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_CRYPTOPP_MAKE_OPTS) shared
endef

define HOST_CRYPTOPP_INSTALL_CMDS
	$(HOST_MAKE_ENV) $(MAKE) -C $(@D) PREFIX=$(HOST_DIR) install-lib
endef

define CRYPTOPP_EXTRACT_CMDS
	$(UNZIP) $(CRYPTOPP_DL_DIR)/$(CRYPTOPP_SOURCE) -d $(@D)
endef

CRYPTOPP_CXXFLAGS = $(TARGET_CXXFLAGS) -fPIC

# _mm256_broadcastsi128_si256 has been added only in gcc 4.9
ifneq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_9),y)
CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_AVX2
endif

ifneq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y)
CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ALTIVEC
endif

ifneq ($(BR2_ARM_CPU_HAS_NEON),y)
CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ARM_NEON
endif

CRYPTOPP_MAKE_OPTS = \
	$(TARGET_CONFIGURE_OPTS) \
	CXXFLAGS="$(CRYPTOPP_CXXFLAGS)"

define CRYPTOPP_BUILD_CMDS
	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(CRYPTOPP_MAKE_OPTS) \
		PREFIX=/usr shared libcryptopp.pc
endef

define CRYPTOPP_INSTALL_TARGET_CMDS
	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX=/usr DESTDIR=$(TARGET_DIR) \
		LDCONFIG=/bin/true install-lib
endef

define CRYPTOPP_INSTALL_STAGING_CMDS
	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX=/usr DESTDIR=$(STAGING_DIR) \
		LDCONFIG=/bin/true install-lib
endef

$(eval $(generic-package))
$(eval $(host-generic-package))
