xref: /aosp_15_r20/external/openthread/third_party/mbedtls/repo/scripts/common.make (revision cfb92d1480a9e65faed56933e9c12405f45898b4)
1# To compile on SunOS: add "-lsocket -lnsl" to LDFLAGS
2
3ifndef MBEDTLS_PATH
4MBEDTLS_PATH := ..
5endif
6
7ifeq (,$(wildcard $(MBEDTLS_PATH)/framework/exported.make))
8    # Use the define keyword to get a multi-line message.
9    # GNU make appends ".  Stop.", so tweak the ending of our message accordingly.
10    define error_message
11$(MBEDTLS_PATH)/framework/exported.make not found.
12Run `git submodule update --init` to fetch the submodule contents.
13This is a fatal error
14    endef
15    $(error $(error_message))
16endif
17include $(MBEDTLS_PATH)/framework/exported.make
18
19CFLAGS	?= -O2
20WARNING_CFLAGS ?= -Wall -Wextra -Wformat=2 -Wno-format-nonliteral
21WARNING_CXXFLAGS ?= -Wall -Wextra -Wformat=2 -Wno-format-nonliteral
22LDFLAGS ?=
23
24LOCAL_CFLAGS = $(WARNING_CFLAGS) -I$(MBEDTLS_TEST_PATH)/include -I$(MBEDTLS_PATH)/include -D_FILE_OFFSET_BITS=64
25LOCAL_CXXFLAGS = $(WARNING_CXXFLAGS) -I$(MBEDTLS_PATH)/include -I$(MBEDTLS_PATH)/tests/include -D_FILE_OFFSET_BITS=64
26LOCAL_LDFLAGS = ${MBEDTLS_TEST_OBJS} 		\
27		-L$(MBEDTLS_PATH)/library			\
28		-lmbedtls$(SHARED_SUFFIX)	\
29		-lmbedx509$(SHARED_SUFFIX)	\
30		-lmbedcrypto$(SHARED_SUFFIX)
31
32include $(MBEDTLS_PATH)/3rdparty/Makefile.inc
33LOCAL_CFLAGS+=$(THIRDPARTY_INCLUDES)
34
35ifndef SHARED
36MBEDLIBS=$(MBEDTLS_PATH)/library/libmbedcrypto.a $(MBEDTLS_PATH)/library/libmbedx509.a $(MBEDTLS_PATH)/library/libmbedtls.a
37else
38MBEDLIBS=$(MBEDTLS_PATH)/library/libmbedcrypto.$(DLEXT) $(MBEDTLS_PATH)/library/libmbedx509.$(DLEXT) $(MBEDTLS_PATH)/library/libmbedtls.$(DLEXT)
39endif
40
41ifdef DEBUG
42LOCAL_CFLAGS += -g3
43endif
44
45# if we're running on Windows, build for Windows
46ifdef WINDOWS
47WINDOWS_BUILD=1
48endif
49
50## Usage: $(call remove_enabled_options,PREPROCESSOR_INPUT)
51## Remove the preprocessor symbols that are set in the current configuration
52## from PREPROCESSOR_INPUT. Also normalize whitespace.
53## Example:
54##   $(call remove_enabled_options,MBEDTLS_FOO MBEDTLS_BAR)
55## This expands to an empty string "" if MBEDTLS_FOO and MBEDTLS_BAR are both
56## enabled, to "MBEDTLS_FOO" if MBEDTLS_BAR is enabled but MBEDTLS_FOO is
57## disabled, etc.
58##
59## This only works with a Unix-like shell environment (Bourne/POSIX-style shell
60## and standard commands) and a Unix-like compiler (supporting -E). In
61## other environments, the output is likely to be empty.
62define remove_enabled_options
63$(strip $(shell
64  exec 2>/dev/null;
65  { echo '#include <mbedtls/build_info.h>'; echo $(1); } |
66  $(CC) $(LOCAL_CFLAGS) $(CFLAGS) -E - |
67  tail -n 1
68))
69endef
70
71ifdef WINDOWS_BUILD
72  DLEXT=dll
73  EXEXT=.exe
74  LOCAL_LDFLAGS += -lws2_32 -lbcrypt
75  ifdef SHARED
76    SHARED_SUFFIX=.$(DLEXT)
77  endif
78
79else # Not building for Windows
80  DLEXT ?= so
81  EXEXT=
82  SHARED_SUFFIX=
83  ifndef THREADING
84    # Auto-detect configurations with pthread.
85    # If the call to remove_enabled_options returns "control", the symbols
86    # are confirmed set and we link with pthread.
87    # If the auto-detection fails, the result of the call is empty and
88    # we keep THREADING undefined.
89    ifeq (control,$(call remove_enabled_options,control MBEDTLS_THREADING_C MBEDTLS_THREADING_PTHREAD))
90      THREADING := pthread
91    endif
92  endif
93
94  ifeq ($(THREADING),pthread)
95    LOCAL_LDFLAGS += -lpthread
96  endif
97endif
98
99ifdef WINDOWS
100PYTHON ?= python
101else
102PYTHON ?= $(shell if type python3 >/dev/null 2>/dev/null; then echo python3; else echo python; fi)
103endif
104
105# See root Makefile
106GEN_FILES ?= yes
107ifdef GEN_FILES
108gen_file_dep =
109else
110gen_file_dep = |
111endif
112
113default: all
114
115$(MBEDLIBS):
116	$(MAKE) -C $(MBEDTLS_PATH)/library
117
118neat: clean
119ifndef WINDOWS
120	rm -f $(GENERATED_FILES)
121else
122	for %f in ($(subst /,\,$(GENERATED_FILES))) if exist %f del /Q /F %f
123endif
124
125# Auxiliary modules used by tests and some sample programs
126MBEDTLS_CORE_TEST_OBJS = $(patsubst %.c,%.o,$(wildcard \
127    ${MBEDTLS_TEST_PATH}/src/*.c \
128    ${MBEDTLS_TEST_PATH}/src/drivers/*.c \
129  ))
130# Additional auxiliary modules for TLS testing
131MBEDTLS_TLS_TEST_OBJS = $(patsubst %.c,%.o,$(wildcard \
132    ${MBEDTLS_TEST_PATH}/src/test_helpers/*.c \
133  ))
134
135MBEDTLS_TEST_OBJS = $(MBEDTLS_CORE_TEST_OBJS) $(MBEDTLS_TLS_TEST_OBJS)
136