fix mbedtls and make it staticly linked to shared object when fetchcontent is enabled

This commit is contained in:
2026-06-18 03:02:51 -05:00
parent 25f9ceba55
commit 07071aba66
5 changed files with 36 additions and 16 deletions

View File

@@ -1,27 +1,40 @@
if(TESSESFRAMEWORK_ENABLE_MBED)
if(TESSESFRAMEWORK_FETCHCONTENT) if(TESSESFRAMEWORK_FETCHCONTENT)
set(MBEDTLS_FATAL_WARNINGS OFF CACHE INTERNAL "For TessesFramework" FORCE) set(MBEDTLS_FATAL_WARNINGS OFF CACHE INTERNAL "For TessesFramework" FORCE)
set(ENABLE_TESTING OFF CACHE INTERNAL "For TessesFramework" FORCE) set(ENABLE_TESTING OFF CACHE INTERNAL "For TessesFramework" FORCE)
set(ENABLE_PROGRAMS OFF CACHE INTERNAL "For TessesFramework" FORCE) set(ENABLE_PROGRAMS OFF CACHE INTERNAL "For TessesFramework" FORCE)
set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build static libraries" FORCE)
if(NOT TESSESFRAMEWORK_STATIC)
set(CMAKE_POSITION_INDEPENDENT_CODE ON CACHE BOOL "Build with PIC" FORCE)
endif()
FetchContent_Declare( FetchContent_Declare(
mbedtls mbedtls
URL https://downloads.tesses.net/cache/libraries/source/mbedtls-3.6.4.tar.bz2 URL https://downloads.tesses.net/cache/libraries/source/mbedtls-3.6.4.tar.bz2
) )
if(TESSESFRAMEWORK_ENABLE_MBED AND TESSESFRAMEWORK_FETCHCONTENT) if(NOT mbedtls_POPULATED)
set(MBEDTLS_FATAL_WARNINGS OFF CACHE INTERNAL "For TessesFramework" FORCE) set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build static" FORCE)
set(ENABLE_TESTING OFF CACHE INTERNAL "For TessesFramework" FORCE) if(NOT TESSESFRAMEWORK_STATIC)
set(ENABLE_PROGRAMS OFF CACHE INTERNAL "For TessesFramework" FORCE) set(CMAKE_POSITION_INDEPENDENT_CODE ON CACHE BOOL "Build PIC" FORCE)
if(TESSESFRAMEWORK_STATIC) set(CMAKE_SKIP_INSTALL_RULES ON)
set(USE_STATIC_MBEDTLS_LIBRARY ON CACHE INTERNAL "For TessesFramework" FORCE) set(DISABLE_PACKAGE_CONFIG_AND_INSTALL ON CACHE BOOL "" FORCE)
set(USE_SHARED_MBEDTLS_LIBRARY OFF CACHE INTERNAL "For TessesFramework" FORCE) endif()
else()
set(USE_STATIC_MBEDTLS_LIBRARY OFF CACHE INTERNAL "For TessesFramework" FORCE)
set(USE_SHARED_MBEDTLS_LIBRARY ON CACHE INTERNAL "For TessesFramework" FORCE)
endif()
FetchContent_Populate(mbedtls)
if(NOT TESSESFRAMEWORK_STATIC)
install(CODE "set(CMAKE_INSTALL_LOCAL_ONLY TRUE)" ALL_COMPONENTS)
endif()
add_subdirectory(${mbedtls_SOURCE_DIR} ${mbedtls_BINARY_DIR})
if(NOT TESSESFRAMEWORK_STATIC)
set(CMAKE_SKIP_INSTALL_RULES OFF)
endif()
endif() endif()
FetchContent_MakeAvailable(mbedtls)
else() else()
find_package(MbedTLS REQUIRED) find_package(MbedTLS REQUIRED)
endif()
endif() endif()

View File

@@ -46,7 +46,9 @@ endif()
if(TESSESFRAMEWORK_FETCHCONTENT) if(TESSESFRAMEWORK_FETCHCONTENT)
target_link_libraries(tessesframework PRIVATE mbedtls mbedx509 mbedcrypto everest p256m) target_link_libraries(tessesframework PRIVATE mbedtls mbedx509 mbedcrypto everest p256m)
if(TESSESFRAMEWORK_STATIC)
list(APPEND TessesFrameworkLibs mbedtls mbedx509 mbedcrypto everest p256m) list(APPEND TessesFrameworkLibs mbedtls mbedx509 mbedcrypto everest p256m)
endif()
else() else()
target_link_libraries(tessesframework PRIVATE mbedtls mbedx509 mbedcrypto) target_link_libraries(tessesframework PRIVATE mbedtls mbedx509 mbedcrypto)

View File

@@ -4,7 +4,7 @@ set(PKGCONFIG_LIBDIR "\${prefix}/${CMAKE_INSTALL_LIBDIR}")
set(PKGCONFIG_PROJECT_DESCRIPTION "A cross platform wrapper library") set(PKGCONFIG_PROJECT_DESCRIPTION "A cross platform wrapper library")
set(PKGCONFIG_PROJECT_HOMEPAGE_URL "https://git.tesses.org/tessesframework") set(PKGCONFIG_PROJECT_HOMEPAGE_URL "https://git.tesses.org/tessesframework")
if(TESSESFRAMEWORK_ENABLE_MBED) if(TESSESFRAMEWORK_ENABLE_MBED AND NOT (TESSESFRAMEWORK_FETCHCONTENT AND NOT TESSESFRAMEWORK_STATIC))
set(PKGCONFIG_DEPS "Requires: mbedtls") set(PKGCONFIG_DEPS "Requires: mbedtls")
else() else()
set(PKGCONFIG_DEPS "") set(PKGCONFIG_DEPS "")

View File

@@ -7,5 +7,7 @@ Description: @PKGCONFIG_PROJECT_DESCRIPTION@
URL: @PKGCONFIG_PROJECT_HOMEPAGE_URL@ URL: @PKGCONFIG_PROJECT_HOMEPAGE_URL@
Version: @PROJECT_VERSION@ Version: @PROJECT_VERSION@
@PKGCONFIG_DEPS@
Cflags: -I"${includedir}" Cflags: -I"${includedir}"
Libs: -L"${libdir}" -ltessesframework Libs: -L"${libdir}" -ltessesframework

View File

@@ -510,7 +510,7 @@ std::string TF_GetExecutableName() {
if (sysctl(mib, 4, path.data(), &len, NULL, 0) < 0) { if (sysctl(mib, 4, path.data(), &len, NULL, 0) < 0) {
return ""; return "";
} }
path.resize(len-1);
return path; return path;
#elif defined(__NetBSD__) #elif defined(__NetBSD__)
auto path = Filesystem::LocalFS->ReadLink( auto path = Filesystem::LocalFS->ReadLink(
@@ -523,15 +523,18 @@ std::string TF_GetExecutableName() {
return path.ToString(); return path.ToString();
#elif TARGET_OS_MAC && !TARGET_OS_IPHONE #elif TARGET_OS_MAC && !TARGET_OS_IPHONE
std::string path; std::string path;
path.resize(1024); path.resize(1025);
uint32_t bufsize = (uint32_t)path.size(); uint32_t bufsize = (uint32_t)path.size();
if (_NSGetExecutablePath(path.data(), &bufsize) == 0) { if (_NSGetExecutablePath(path.data(), &bufsize) == 0) {
path.resize(bufsize); path.resize(bufsize-1);
return path; return path;
} else { } else {
path.resize(bufsize); path.resize(bufsize);
if (_NSGetExecutablePath(path.data(), &bufsize) == 0) if (_NSGetExecutablePath(path.data(), &bufsize) == 0)
{
path.resize(bufsize-1);
return path; return path;
}
} }
#endif #endif