Only link with libdl on Linux

Requiring an extra library for dlopen is a Linux non-POSIX-compliance.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
Gilles Peskine 2021-11-04 15:07:28 +01:00
parent 27482f17f1
commit 71fcb3c994
2 changed files with 10 additions and 2 deletions

View file

@ -18,6 +18,12 @@ LOCAL_LDFLAGS = ${MBEDTLS_TEST_OBJS} \
-lmbedx509$(SHARED_SUFFIX) \
-lmbedcrypto$(SHARED_SUFFIX)
ifeq ($(shell uname -s),Linux)
DLOPEN_LDFLAGS ?= -ldl
else
DLOPEN_LDFLAGS ?=
endif
include ../3rdparty/Makefile.inc
LOCAL_CFLAGS+=$(THIRDPARTY_INCLUDES)
@ -328,7 +334,7 @@ test/dlopen$(EXEXT): test/dlopen.c $(DEP)
# Do not link any test objects (that would bring in a static dependency on
# libmbedcrypto at least). Do not link with libmbed* (that would defeat the
# purpose of testing dynamic loading).
$(CC) $(LOCAL_CFLAGS) $(CFLAGS) test/dlopen.c $(LDFLAGS) -ldl -o $@
$(CC) $(LOCAL_CFLAGS) $(CFLAGS) test/dlopen.c $(LDFLAGS) $(DLOPEN_LDFLAGS) -o $@
endif
test/query_config.o: test/query_config.c test/query_config.h $(DEP)

View file

@ -38,7 +38,9 @@ endif()
if(USE_SHARED_MBEDTLS_LIBRARY)
add_executable(dlopen "dlopen.c")
target_include_directories(dlopen PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../include)
target_link_libraries(dlopen "-ldl")
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
target_link_libraries(dlopen "-ldl")
endif()
endif()
foreach(exe IN LISTS executables_libs executables_mbedcrypto)