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