###########################################################################
#
#  Copyright (c) 2018, ARM Limited, All Rights Reserved
#  SPDX-License-Identifier: Apache-2.0
#
#  Licensed under the Apache License, Version 2.0 (the "License"); you may
#  not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#  http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
#  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#
###########################################################################

#
# Use this file to export an Mbed Crypto release tarball as follows, from the
# top level of the mbedtls repo:
#
#   1) make -f scripts/mbed_crypto.make
#

.PHONY: all clean FORCE

all: mbedcrypto.tar.gz

#
# Crypto-necessary library files
#
LIB_FILES := \
	aes.c \
	aesni.c \
	arc4.c \
	asn1parse.c \
	asn1write.c \
	base64.c \
	bignum.c \
	blowfish.c \
	camellia.c \
	ccm.c \
	cipher.c \
	cipher_wrap.c \
	cmac.c \
	ctr_drbg.c \
	des.c \
	ecdsa.c \
	ecp.c \
	ecp_curves.c \
	entropy.c \
	entropy_poll.c \
	gcm.c \
	hmac_drbg.c \
	md.c \
	md2.c \
	md4.c \
	md5.c \
	md_wrap.c \
	oid.c \
	pem.c \
	pk.c \
	pk_wrap.c \
	pkcs12.c \
	pkcs5.c \
	pkparse.c \
	pkwrite.c \
	platform.c \
	platform_util.c \
	psa_crypto.c \
	psa_crypto_storage.h \
	psa_crypto_storage.c \
	psa_crypto_storage_backend.h \
	psa_crypto_storage_file.c \
	ripemd160.c \
	rsa_internal.c \
	rsa.c \
	sha1.c \
	sha256.c \
	sha512.c \
	xtea.c \
# Don't delete this line.

#
# Crypto-necessary include files
#
INC_FILES := \
	mbedcrypto/aes.h \
	mbedcrypto/aesni.h \
	mbedcrypto/arc4.h \
	mbedcrypto/asn1.h \
	mbedcrypto/asn1write.h \
	mbedcrypto/base64.h \
	mbedcrypto/bignum.h \
	mbedcrypto/blowfish.h \
	mbedcrypto/bn_mul.h \
	mbedcrypto/camellia.h \
	mbedcrypto/ccm.h \
	mbedcrypto/certs.h \
	mbedcrypto/check_config.h \
	mbedcrypto/cipher.h \
	mbedcrypto/cipher_internal.h \
	mbedcrypto/cmac.h \
	mbedcrypto/config.h \
	mbedcrypto/ctr_drbg.h \
	mbedcrypto/des.h \
	mbedcrypto/ecdsa.h \
	mbedcrypto/ecp.h \
	mbedcrypto/ecp_internal.h \
	mbedcrypto/entropy.h \
	mbedcrypto/entropy_poll.h \
	mbedcrypto/error.h \
	mbedcrypto/gcm.h \
	mbedcrypto/hmac_drbg.h \
	mbedcrypto/md.h \
	mbedcrypto/md2.h \
	mbedcrypto/md4.h \
	mbedcrypto/md5.h \
	mbedcrypto/md_internal.h \
	mbedcrypto/oid.h \
	mbedcrypto/pem.h \
	mbedcrypto/pk.h \
	mbedcrypto/pk_internal.h \
	mbedcrypto/pkcs11.h \
	mbedcrypto/pkcs12.h \
	mbedcrypto/pkcs5.h \
	mbedcrypto/platform.h \
	mbedcrypto/platform_util.h \
	mbedcrypto/ripemd160.h \
	mbedcrypto/rsa.h \
	mbedcrypto/rsa_internal.h \
	mbedcrypto/sha1.h \
	mbedcrypto/sha256.h \
	mbedcrypto/sha512.h \
	mbedcrypto/threading.h \
	mbedcrypto/xtea.h \
	psa/crypto.h \
	psa/crypto_extra.h \
	psa/crypto_platform.h \
	psa/crypto_sizes.h \
	psa/crypto_struct.h \
# Don't delete this line.

TEST_FILES := \
	tests/scripts/generate_test_code.py \
	tests/scripts/mbedtls_test.py \
	tests/scripts/test_generate_test_code.py \
	tests/scripts/run-test-suites.pl \
	tests/suites/helpers.function \
	tests/suites/host_test.function \
	tests/suites/main_test.function \
	tests/suites/target_test.function \
	tests/suites/test_suite_psa_crypto.data \
	tests/suites/test_suite_psa_crypto.function \
	tests/suites/test_suite_psa_crypto_hash.data \
	tests/suites/test_suite_psa_crypto_hash.function \
	tests/suites/test_suite_psa_crypto_metadata.data \
	tests/suites/test_suite_psa_crypto_metadata.function \
	tests/suites/test_suite_psa_crypto_persistent_key.data \
	tests/suites/test_suite_psa_crypto_persistent_key.function \
	tests/suites/test_suite_psa_crypto_storage_file.data \
	tests/suites/test_suite_psa_crypto_storage_file.function \
# Don't delete this line.

OTHER_FILES := \
	LICENSE \
	VERSION.txt \
	programs/psa/crypto_examples.c \
	programs/psa/key_ladder_demo.c \
	programs/psa/key_ladder_demo.sh \
	programs/psa/psa_constant_names.c \
	scripts/config.pl \
	scripts/generate_psa_constants.py \
# Don't delete this line.

# Prepend destination directory
LIB_FILES := $(addprefix crypto/library/,$(LIB_FILES))
INC_FILES := $(addprefix crypto/include/,$(INC_FILES))
TEST_FILES := $(addprefix crypto/,$(TEST_FILES))
OTHER_FILES := $(addprefix crypto/,$(OTHER_FILES))

define rename_mbedcrypto
	@sed -i -e 's/Mbed TLS/Mbed Crypto/g' $(1)
	@sed -i -e 's/mbed TLS/Mbed Crypto/g' $(1)
	@sed -i -e 's/MBEDTLS_/MBEDCRYPTO_/g' $(1)
	@sed -i -e 's/mbedtls/mbedcrypto/g' $(1)
	@sed -i -e 's/MbedTls/MbedCrypto/g' $(1)
	@sed -i -e 's/include\/mbedtls/include\/mbedcrypto/g' $(1)
endef

crypto/include/mbedcrypto/config.h: configs/config-psa-crypto.h
	@echo $@
	@mkdir -p $(dir $@)
	@cp $< $@
	@#Rename the file in the comments
	@sed -i -e 's/config-psa-crypto.h/config.h/g' $@
	$(call rename_mbedcrypto,$@)

crypto/tests/data_files/%: tests/data_files/%
	@echo $@
	@mkdir -p $(dir $@)
	@cp $< $@
	@#Don't rename things inside data files

crypto/include/mbedcrypto/%.h: include/mbedtls/%.h
	@echo $@
	@mkdir -p $(dir $@)
	@cp $< $@
	$(call rename_mbedcrypto,$@)

crypto/LICENSE: apache-2.0.txt
	@echo $@
	@mkdir -p $(dir $@)
	@cp $< $@
	@#Don't rename anything in the license

crypto/%: %
	@echo $@
	@mkdir -p $(dir $@)
	@cp $< $@
	$(call rename_mbedcrypto,$@)

crypto/VERSION.txt: FORCE
	@git describe --tags --abbrev=12 --dirty --always > $@

mbedcrypto.tar.gz: $(LIB_FILES) $(INC_FILES) $(TEST_FILES) $(OTHER_FILES)
	@echo $@
	@tar czf mbedcrypto.tar.gz crypto

clean:
	@echo clean
	@rm -rf mbedcrypto.tar.gz \
		$(LIB_FILES) $(INC_FILES) $(TEST_FILES) $(OTHER_FILES)

FORCE:

# vi: ft=make
