1# Copyright 2017 The Fuchsia Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5# Variables shared between the userlib and hostlib 6LOCAL_DIR := $(GET_LOCAL_DIR) 7 8SHARED_COMPILEFLAGS := \ 9 -fvisibility=hidden -Wno-unused-function -include $(LOCAL_DIR)/stack-note.S 10 11CRYPTO_DIR=$(LOCAL_DIR)/crypto 12SHARED_SRCS := \ 13 $(CRYPTO_DIR)/chacha/chacha.c \ 14 $(CRYPTO_DIR)/cipher_extra/e_aesgcmsiv.c \ 15 $(CRYPTO_DIR)/cpu-aarch64-fuchsia.c \ 16 $(CRYPTO_DIR)/cpu-arm.c \ 17 $(CRYPTO_DIR)/cpu-intel.c \ 18 $(CRYPTO_DIR)/crypto.c \ 19 $(CRYPTO_DIR)/err/err.c \ 20 $(CRYPTO_DIR)/fipsmodule/aes/aes.c \ 21 $(CRYPTO_DIR)/fipsmodule/aes/mode_wrappers.c \ 22 $(CRYPTO_DIR)/fipsmodule/cipher/aead.c \ 23 $(CRYPTO_DIR)/fipsmodule/cipher/cipher.c \ 24 $(CRYPTO_DIR)/fipsmodule/cipher/e_aes.c \ 25 $(CRYPTO_DIR)/fipsmodule/digest/digest.c \ 26 $(CRYPTO_DIR)/fipsmodule/digest/digests.c \ 27 $(CRYPTO_DIR)/fipsmodule/hmac/hmac.c \ 28 $(CRYPTO_DIR)/fipsmodule/md4/md4.c \ 29 $(CRYPTO_DIR)/fipsmodule/md5/md5.c \ 30 $(CRYPTO_DIR)/fipsmodule/modes/cbc.c \ 31 $(CRYPTO_DIR)/fipsmodule/modes/cfb.c \ 32 $(CRYPTO_DIR)/fipsmodule/modes/ctr.c \ 33 $(CRYPTO_DIR)/fipsmodule/modes/gcm.c \ 34 $(CRYPTO_DIR)/fipsmodule/modes/ofb.c \ 35 $(CRYPTO_DIR)/fipsmodule/modes/polyval.c \ 36 $(CRYPTO_DIR)/fipsmodule/rand/ctrdrbg.c \ 37 $(CRYPTO_DIR)/fipsmodule/rand/rand.c \ 38 $(CRYPTO_DIR)/fipsmodule/sha/sha1.c \ 39 $(CRYPTO_DIR)/fipsmodule/sha/sha256.c \ 40 $(CRYPTO_DIR)/fipsmodule/sha/sha512.c \ 41 $(CRYPTO_DIR)/hkdf/hkdf.c \ 42 $(CRYPTO_DIR)/mem.c \ 43 $(CRYPTO_DIR)/rand_extra/forkunsafe.c \ 44 $(CRYPTO_DIR)/rand_extra/fuchsia.c \ 45 $(CRYPTO_DIR)/thread_none.c \ 46 47# TODO(aarongreen): Replace or get upstream to support more fully. 48DECREPIT_DIR=$(LOCAL_DIR)/decrepit 49SHARED_SRCS += \ 50 $(DECREPIT_DIR)/xts/xts.c \ 51 52# Auto-generated sources 53SHARED_SRCS += \ 54 $(LOCAL_DIR)/err_data.c \ 55 56ifeq ($(ARCH),arm64) 57# TODO(aarongreen): Workaround for the non-hidden OPENSSL_armcap_P symbol, which causes arm/clang to 58# fail to link. Remove when resolved upstream. 59SHARED_COMPILEFLAGS += -DOPENSSL_NO_ASM 60 61ASM_DIR = $(LOCAL_DIR)/linux-aarch64/crypto 62SHARED_SRCS += \ 63 $(ASM_DIR)/chacha/chacha-armv8.S \ 64 $(ASM_DIR)/fipsmodule/sha512-armv8.S \ 65 $(ASM_DIR)/fipsmodule/ghashv8-armx64.S \ 66 $(ASM_DIR)/fipsmodule/sha1-armv8.S \ 67 $(ASM_DIR)/fipsmodule/sha256-armv8.S \ 68 $(ASM_DIR)/fipsmodule/aesv8-armx64.S \ 69 70else ifeq ($(ARCH),x86) 71 72ASM_DIR = $(LOCAL_DIR)/linux-x86_64/crypto 73SHARED_SRCS += \ 74 $(ASM_DIR)/cipher_extra/aes128gcmsiv-x86_64.S \ 75 $(ASM_DIR)/chacha/chacha-x86_64.S \ 76 $(ASM_DIR)/fipsmodule/sha256-x86_64.S \ 77 $(ASM_DIR)/fipsmodule/ghash-x86_64.S \ 78 $(ASM_DIR)/fipsmodule/bsaes-x86_64.S \ 79 $(ASM_DIR)/fipsmodule/aesni-x86_64.S \ 80 $(ASM_DIR)/fipsmodule/sha1-x86_64.S \ 81 $(ASM_DIR)/fipsmodule/vpaes-x86_64.S \ 82 $(ASM_DIR)/fipsmodule/md5-x86_64.S \ 83 $(ASM_DIR)/fipsmodule/aes-x86_64.S \ 84 $(ASM_DIR)/fipsmodule/sha512-x86_64.S \ 85 $(ASM_DIR)/fipsmodule/aesni-gcm-x86_64.S \ 86 $(ASM_DIR)/fipsmodule/rdrand-x86_64.S \ 87 88else 89$(error Unsupported architecture) 90 91endif 92 93# userlib 94MODULE := $(LOCAL_DIR) 95MODULE_TYPE := userlib 96MODULE_SRCS := $(SHARED_SRCS) 97MODULE_COMPILEFLAGS += $(SHARED_COMPILEFLAGS) 98MODULE_LIBS := \ 99 system/ulib/fdio \ 100 system/ulib/c \ 101 102include make/module.mk 103 104 105# hostlib 106MODULE := $(LOCAL_DIR).hostlib 107MODULE_TYPE := hostlib 108MODULE_SRCS := $(SHARED_SRCS) 109MODULE_COMPILEFLAGS += $(SHARED_COMPILEFLAGS) -DOPENSSL_NO_THREADS -DOPENSSL_NO_ASM 110 111include make/module.mk 112