vcpkg/ports/cyrus-sasl/portfile.cmake
2024-08-01 12:50:45 -07:00

111 lines
4.8 KiB
CMake

# NOTE: We don't use vcpkg_from_github as it does not
# include all the necessary source files
vcpkg_download_distfile(ARCHIVE
URLS "https://github.com/cyrusimap/cyrus-sasl/releases/download/cyrus-sasl-${VERSION}/cyrus-sasl-${VERSION}.tar.gz"
FILENAME "cyrus-sasl-${VERSION}.tar.gz"
SHA512 db15af9079758a9f385457a79390c8a7cd7ea666573dace8bf4fb01bb4b49037538d67285727d6a70ad799d2e2318f265c9372e2427de9371d626a1959dd6f78
)
vcpkg_extract_source_archive(SOURCE_PATH
ARCHIVE "${ARCHIVE}"
PATCHES
configure.diff
)
if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW)
file(REMOVE "${SOURCE_PATH}/include/md5global.h")
file(COPY "${SOURCE_PATH}/win32/include/md5global.h" DESTINATION "${SOURCE_PATH}/include/md5global.h")
vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY) # only DLL build rules
set(STATIC_CRT_LINKAGE no)
if(VCPKG_CRT_LINKAGE STREQUAL "static")
set(STATIC_CRT_LINKAGE yes)
endif()
string(APPEND VCPKG_C_FLAGS " /DUNICODE /D_UNICODE /D_WINSOCK_DEPRECATED_NO_WARNINGS")
string(APPEND VCPKG_CXX_FLAGS " /DUNICODE /D_UNICODE /D_WINSOCK_DEPRECATED_NO_WARNINGS")
cmake_path(NATIVE_PATH CURRENT_INSTALLED_DIR CURRENT_INSTALLED_DIR_NATIVE)
cmake_path(NATIVE_PATH CURRENT_PACKAGES_DIR CURRENT_PACKAGES_DIR_NATIVE)
vcpkg_install_nmake(
SOURCE_PATH "${SOURCE_PATH}"
PROJECT_NAME "NTMakefile"
OPTIONS
STATIC=${STATIC_CRT_LINKAGE}
"SUBDIRS=lib plugins utils"
# Note https://www.cyrusimap.org/sasl/sasl/windows.html#limitations
GSSAPI=MITKerberos # but "GSSAPI - tested using CyberSafe"
"GSSAPI_INCLUDE=${CURRENT_INSTALLED_DIR_NATIVE}\\include"
SASLDB=LMDB # but "SASLDB - only SleepyCat version can be built"
"LMDB_INCLUDE=${CURRENT_INSTALLED_DIR_NATIVE}\\include"
SRP=1
DO_SRP_SETPASS=1
OTP=1
"OPENSSL_INCLUDE=${CURRENT_INSTALLED_DIR_NATIVE}\\include"
# Silence log messages about default initialization
"DB_LIB=unused"
"DB_INCLUDE=${CURRENT_PACKAGES_DIR_NATIVE}\\unused"
"DB_LIBPATH=${CURRENT_PACKAGES_DIR_NATIVE}\\unused"
"LDAP_INCLUDE=${CURRENT_PACKAGES_DIR_NATIVE}\\unused"
"LDAP_LIB_BASE=${CURRENT_PACKAGES_DIR_NATIVE}\\unused"
"SQLITE_INCLUDE=${CURRENT_PACKAGES_DIR_NATIVE}\\unused"
"SQLITE_LIBPATH=${CURRENT_PACKAGES_DIR_NATIVE}\\unused"
"SQLITE_INCLUDE3=${CURRENT_PACKAGES_DIR_NATIVE}\\unused"
"SQLITE_LIBPATH3=${CURRENT_PACKAGES_DIR_NATIVE}\\unused"
OPTIONS_RELEASE
CFG=Release
"prefix=${CURRENT_PACKAGES_DIR_NATIVE}"
"GSSAPI_LIBPATH=${CURRENT_INSTALLED_DIR_NATIVE}\\lib"
"LMDB_LIBPATH=${CURRENT_INSTALLED_DIR_NATIVE}\\lib"
"OPENSSL_LIBPATH=${CURRENT_INSTALLED_DIR_NATIVE}\\lib"
OPTIONS_DEBUG
CFG=Debug
"prefix=${CURRENT_PACKAGES_DIR_NATIVE}\\debug"
"GSSAPI_LIBPATH=${CURRENT_INSTALLED_DIR_NATIVE}\\debug\\lib"
"LMDB_LIBPATH=${CURRENT_INSTALLED_DIR_NATIVE}\\debug\\lib"
"OPENSSL_LIBPATH=${CURRENT_INSTALLED_DIR_NATIVE}\\debug\\lib"
)
vcpkg_copy_tools(TOOL_NAMES pluginviewer sasldblistusers2 saslpasswd2 testsuite AUTO_CLEAN)
block(SCOPE_FOR VARIABLES)
set(prefix [[placeholder]])
set(exec_prefix [[${prefix}]])
set(libdir [[${prefix}/lib]])
set(includedir [[${prefix}/include]])
configure_file("${SOURCE_PATH}/libsasl2.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/libsasl2.pc" @ONLY)
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/libsasl2.pc" " -lsasl2" " -llibsasl")
if(NOT VCPKG_BUILD_TYPE)
file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig")
file(COPY_FILE "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/libsasl2.pc" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/libsasl2.pc")
endif()
endblock()
else()
vcpkg_find_acquire_program(PKGCONFIG)
set(ENV{PKG_CONFIG} "${PKGCONFIG}")
vcpkg_configure_make(
SOURCE_PATH "${SOURCE_PATH}"
AUTOCONFIG
OPTIONS
--enable-sample=no
--with-dblib=lmdb
--with-gss_impl=mit
--disable-macos-framework
)
vcpkg_install_make()
endif()
vcpkg_fixup_pkgconfig()
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING"
COMMENT [[
The top-level COPYING file represents the license identified as BSD with
Attribution and HPND disclaimer. However, various source files are under
different licenses, including other BSD license variants, MIT license
variants, OpenLDAP, OpenSSL and others.
]])