default: conditional_build 


CURR_DIR := $(shell pwd)
BUILD_DIR:=$(subst /userspace, /userspace,$(CURR_DIR))
BUILD_DIR:=$(word 1, $(BUILD_DIR))
include $(BUILD_DIR)/make.common


ifneq ($(strip $(CONFIG_PACKAGE_cryptsetup)),)
conditional_build: all
else
conditional_build:
	@echo "skipping $(CURR_DIR)"
endif


PKG_NAME:=cryptsetup
PKG_VERSION:=2.0.5
PKG_RELEASE:=1

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/utils/cryptsetup/v2.0
PKG_HASH:=a0f72ca2c824a5a555dc8924413dfe947eca23ab2e30bcff54eaafefe5fe301d

PKG_LICENSE:=GPL-2.0+ LGPL-2.1+
PKG_LICENSE_FILES:=COPYING COPYING.LGPL
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>

PKG_BUILD_DIR:=$(CURR_DIR)/$(PKG_NAME)-$(PKG_VERSION)

include $(BUILD_DIR)/dni/make.dni

define Package/cryptsetup/Default
  SECTION:=utils
  CATEGORY:=Utilities
  SUBMENU:=Encryption
  TITLE:=Cryptsetup
  DEPENDS:=+libblkid +libuuid +libpopt +lvm2 +libdevmapper +libjson-c +@KERNEL_DIRECT_IO
  URL:=https://gitlab.com/cryptsetup/cryptsetup/
endef

define Package/cryptsetup
$(call Package/cryptsetup/Default)
  DEPENDS+=+libgcrypt
  VARIANT:=gcrypt
endef

define Package/cryptsetup-openssl
$(call Package/cryptsetup/Default)
  TITLE+= (with openssl support)
  DEPENDS+=+libopenssl
  VARIANT:=openssl
endef

define Package/cryptsetup/Default/description
	Cryptsetup-luks
endef

define Package/cryptsetup/description
$(call Package/cryptsetup/Default/description)
linked against libgcrypt
endef

CONFIGURE_ARGS+= \
	--disable-blkid 

define Package/cryptsetup-openssl/description
$(call Package/cryptsetup/Default/description)
linked against openssl
endef

ifeq ($(BUILD_VARIANT),openssl)
CONFIGURE_ARGS+= \
        --with-crypto_backend=openssl
endif

define Build/Prepare
	rm -rf $(PKG_BUILD_DIR)
	mkdir -p $(PKG_BUILD_DIR)
	(tar xvJf $(DL_DIR)/$(PKG_SOURCE) || true)
	$(call Build/Patch/Default)
	[ -e $(PKG_BUILD_DIR)/configure ] && chmod +x $(PKG_BUILD_DIR)/configure
endef

PKG_CONFIG_PATH:=$(PKG_CONFIG_PATH):$(BCM_FSBUILD_DIR)/public/lib/pkgconfig:$(BCM_FSBUILD_DIR)/gpl/lib/pkgconfig

CFLAGS += -I$(BCM_FSBUILD_DIR)/gpl/include -L$(BCM_FSBUILD_DIR)/lib -L$(BCM_FSBUILD_DIR)/gpl/lib
CFLAGS += -I$(BCM_FSBUILD_DIR)/public/include -L$(BCM_FSBUILD_DIR)/lib -L$(BCM_FSBUILD_DIR)/public/lib
CFLAGS += -I$(BCM_FSBUILD_DIR)/private/include -L$(BCM_FSBUILD_DIR)/lib -L$(BCM_FSBUILD_DIR)/private/lib
CFLAGS+= -Wl,-rpath-link=$(BCM_FSBUILD_DIR) -Wl,-rpath=$(BCM_FSBUILD_DIR) 
LIBS = -luuid -ldevmapper -ljson-c -lgcrypt -lgpg-error -L$(BCM_FSBUILD_DIR)/gpl/lib -L$(BCM_FSBUILD_DIR)/public/lib

CONFIGURE_VARS+= CFLAGS="$(CFLAGS)" PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)" LIBGCRYPT_CONFIG="$(HOSTTOOLS_DIR)/local_install/libgcrypt-config" LIBS="$(LIBS)"

define Build/Configure
	$(call Build/Configure/Default)
endef

define Build/Compile
	$(MAKE) -C $(PKG_BUILD_DIR) PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" LIBS="$(LIBS)" DESTDIR="$(PKG_INSTALL_DIR)" all
endef

define Package/install
	$(INSTALL_BDIR) $(1)/usr/sbin
	$(CP) $(PKG_BUILD_DIR)/.libs/cryptsetup $(1)/usr/sbin
	$(INSTALL_BDIR) $(1)/usr/lib
	$(CP) $(PKG_BUILD_DIR)/.libs/libcryptsetup.so* $(1)/usr/lib
endef

Package/cryptsetup-openssl/install = $(Package/cryptsetup/install)


prepare:
	$(call Build/Prepare)

compile:
	$(call Build/Compile)
	$(call Build/InstallDev,$(BCM_FSBUILD_DIR))
	$(call Package/install,$(INSTALL_DIR))

all:
ifneq ($(HAVEBUILT),built)
	$(call Build/Prepare)
	$(call Build/Configure)
	$(call Build/Compile)
	$(call Build/InstallDev,$(BCM_FSBUILD_DIR))
	$(call Package/install,$(INSTALL_DIR))
	@touch $(STAMP_BUILT)
endif


clean:
	rm -rf $(PKG_BUILD_DIR)


shell:
	bash -i

