Skip to content

Commit

Permalink
Update Windows libraries
Browse files Browse the repository at this point in the history
  • Loading branch information
tmp64 committed Dec 2, 2023
1 parent 012ac98 commit 33e514e
Show file tree
Hide file tree
Showing 47 changed files with 4,661 additions and 559 deletions.
110 changes: 43 additions & 67 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,9 @@ if( COMPILER_GNU )
set( WARNING_LEVEL_C_CXX "${WARNING_LEVEL_C_CXX} -Werror" )
endif()
elseif( COMPILER_MSVC )
# LNK4099: PDB was not found with 'xxx.lib(yyy.obj)' or at ''; linking object as if no debug info
set(GAME_LINKER_FLAGS "${GAME_LINKER_FLAGS} /IGNORE:4099")

if( WARNINGS_ARE_ERRORS )
set( WARNING_LEVEL_C_CXX "${WARNING_LEVEL_C_CXX} /WX" )
endif()
Expand Down Expand Up @@ -408,77 +411,50 @@ if( USE_UPDATER )
if( NOT HAS_STD_FILESYSTEM )
message( FATAL_ERROR "Updater requires support for std::filesystem." )
endif()

if( WIN32 )
option( CURL_STATICLIB "Enable if cURL was built as a static library" 0 )
option( CURL_REPO_LIBS "Use static curl from external/curl" 1 )

if( CURL_REPO_LIBS )
set( CURL_STATICLIB 1 CACHE BOOL "" FORCE )
set( CURL_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/external/windows/curl/include" CACHE PATH "" FORCE )
set( CURL_LIBRARY "" CACHE FILEPATH "" FORCE )
set( CURL_LIBRARY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/external/windows/curl/lib/libcurl_static_debug.lib" CACHE FILEPATH "" FORCE )
set( CURL_LIBRARY_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/external/windows/curl/lib/libcurl_static.lib" CACHE FILEPATH "" FORCE )
endif()

find_package( libzip REQUIRED PATHS "${CMAKE_CURRENT_SOURCE_DIR}/external/windows/libzip/lib/cmake" NO_DEFAULT_PATH )

find_package( CURL MODULE REQUIRED )
set( UPDATER_LIBS
${CURL_LIBRARIES}
${UPDATER_LIBS}
nlohmann_json
libzip::zip
)

set( UPDATER_INCLUDE_PATHS
${CURL_INCLUDE_DIRS}
)

set( UPDATER_DEFINES
USE_UPDATER=1
)

if( CURL_STATICLIB )
set( UPDATER_DEFINES
${UPDATER_DEFINES}
CURL_STATICLIB=1
)
if( WIN32 )
set( UPDATER_LIBS
${UPDATER_LIBS}
wldap32.lib
Crypt32.lib
Ws2_32.lib
)
endif()
endif()

# Set platform path
if( PLATFORM_WINDOWS )
set( PLAT_EXTERNAL_PATH "${CMAKE_CURRENT_SOURCE_DIR}/external/windows")
elseif( PLATFORM_LINUX )
set( PLAT_EXTERNAL_PATH "${CMAKE_CURRENT_SOURCE_DIR}/external/linux")
elseif( PLATFORM_MACOS )
set( PLAT_EXTERNAL_PATH "${CMAKE_CURRENT_SOURCE_DIR}/external/macos")
else()
set( LINUX_LIB_PATH "${CMAKE_CURRENT_SOURCE_DIR}/external/linux")

# FIXME 2023-11-26: CMake completely ignores this directory.
message(FATAL_ERROR "Unknown platform")
endif()

# Find libraries
if( PLATFORM_WINDOWS )
set( ZLIB_ROOT "${PLAT_EXTERNAL_PATH}/zlib" )
set( ZLIB_USE_STATIC_LIBS ON )
find_package( ZLIB REQUIRED )
elseif ( PLATFORM_LINUX )
# FIXME 2023-11-26: CMake completely ignores PLAT_EXTERNAL_PATH on Linux.
# FIXME 2023-11-26: But the system library works just fine
# set( ZLIB_INCLUDE_DIRS "${LINUX_LIB_PATH}/zlib/include" )
# set( ZLIB_LIBRARIES "${LINUX_LIB_PATH}/zlib/lib/libz.a" )
# set( ZLIB_USE_STATIC_LIBS ON )
# find_package( ZLIB REQUIRED )

set( libzip_DIR "${LINUX_LIB_PATH}/libzip/lib/cmake/libzip" )
find_package( libzip REQUIRED NO_DEFAULT_PATH )

set( MbedTLS_DIR "${LINUX_LIB_PATH}/mbedtls/lib/cmake/MbedTLS" )
set( ZLIB_USE_STATIC_LIBS ON )
find_package( ZLIB REQUIRED )
endif()

set( libzip_DIR "${PLAT_EXTERNAL_PATH}/libzip/lib/cmake/libzip" )
find_package( libzip REQUIRED NO_DEFAULT_PATH )

if( PLATFORM_LINUX )
# The bundled curl statically links with the bundled MbedTLS
set( MbedTLS_DIR "${PLAT_EXTERNAL_PATH}/mbedtls/lib/cmake/MbedTLS" )
find_package( MbedTLS REQUIRED NO_DEFAULT_PATH )

set( CURL_DIR "${LINUX_LIB_PATH}/libcurl/lib/cmake/CURL" )
find_package( CURL REQUIRED NO_DEFAULT_PATH )

set( UPDATER_LIBS
ZLIB::ZLIB
libzip::zip
MbedTLS::mbedtls
CURL::libcurl
)
endif()

set( CURL_DIR "${PLAT_EXTERNAL_PATH}/curl/lib/cmake/CURL" )
find_package( CURL REQUIRED NO_DEFAULT_PATH )

set( UPDATER_LIBS
libzip::zip
CURL::libcurl
)

set( UPDATER_DEFINES
USE_UPDATER=1
)
endif()

#-----------------------------------------------------------------
Expand Down
22 changes: 0 additions & 22 deletions external/windows/curl/COPYING

This file was deleted.

6 changes: 0 additions & 6 deletions external/windows/curl/README.txt

This file was deleted.

196 changes: 196 additions & 0 deletions external/windows/curl/bin/curl-config
Original file line number Diff line number Diff line change
@@ -0,0 +1,196 @@
#! /bin/sh
#***************************************************************************
# _ _ ____ _
# Project ___| | | | _ \| |
# / __| | | | |_) | |
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
# Copyright (C) Daniel Stenberg, <[email protected]>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the COPYING file.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
# SPDX-License-Identifier: curl
#
###########################################################################

prefix="C:/bhl/prefix-out"
exec_prefix=${prefix}
includedir=${prefix}/include
cppflag_curl_staticlib=-DCURL_STATICLIB

usage()
{
cat <<EOF
Usage: curl-config [OPTION]
Available values for OPTION include:
--built-shared says 'yes' if libcurl was built shared
--ca ca bundle install path
--cc compiler
--cflags pre-processor and compiler flags
--checkfor [version] check for (lib)curl of the specified version
--configure the arguments given to configure when building curl
--features newline separated list of enabled features
--help display this help and exit
--libs library linking information
--prefix curl install prefix
--protocols newline separated list of enabled protocols
--ssl-backends output the SSL backends libcurl was built to support
--static-libs static libcurl library linking information
--version output version information
--vernum output the version information as a number (hexadecimal)
EOF

exit $1
}

if test $# -eq 0; then
usage 1
fi

while test $# -gt 0; do
case "$1" in
# this deals with options in the style
# --option=value and extracts the value part
# [not currently used]
-*=*) value=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
*) value= ;;
esac

case "$1" in
--built-shared)
echo no
;;

--ca)
echo
;;

--cc)
echo "C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.38.33130/bin/Hostx86/x86/cl.exe"
;;

--prefix)
echo "$prefix"
;;

--feature|--features)
for feature in SSL IPv6 unixsockets libz AsynchDNS Largefile SSPI alt-svc HSTS SPNEGO Kerberos NTLM HTTPS-proxy threadsafe ""; do
test -n "$feature" && echo "$feature"
done
;;

--protocols)
for protocol in DICT FILE FTP FTPS GOPHER GOPHERS HTTP HTTPS IMAP IMAPS MQTT POP3 POP3S RTSP SMB SMBS SMTP SMTPS TELNET TFTP; do
echo "$protocol"
done
;;

--version)
echo libcurl 8.4.0
exit 0
;;

--checkfor)
checkfor=$2
cmajor=`echo $checkfor | cut -d. -f1`
cminor=`echo $checkfor | cut -d. -f2`
# when extracting the patch part we strip off everything after a
# dash as that's used for things like version 1.2.3-CVS
cpatch=`echo $checkfor | cut -d. -f3 | cut -d- -f1`

vmajor=`echo 8.4.0 | cut -d. -f1`
vminor=`echo 8.4.0 | cut -d. -f2`
# when extracting the patch part we strip off everything after a
# dash as that's used for things like version 1.2.3-CVS
vpatch=`echo 8.4.0 | cut -d. -f3 | cut -d- -f1`

if test "$vmajor" -gt "$cmajor"; then
exit 0;
fi
if test "$vmajor" -eq "$cmajor"; then
if test "$vminor" -gt "$cminor"; then
exit 0
fi
if test "$vminor" -eq "$cminor"; then
if test "$cpatch" -le "$vpatch"; then
exit 0
fi
fi
fi

echo "requested version $checkfor is newer than existing 8.4.0"
exit 1
;;

--vernum)
echo 080400
exit 0
;;

--help)
usage 0
;;

--cflags)
if test "X$cppflag_curl_staticlib" = "X-DCURL_STATICLIB"; then
CPPFLAG_CURL_STATICLIB="-DCURL_STATICLIB "
else
CPPFLAG_CURL_STATICLIB=""
fi
if test "X${prefix}/include" = "X/usr/include"; then
echo "$CPPFLAG_CURL_STATICLIB"
else
echo "${CPPFLAG_CURL_STATICLIB}-I${prefix}/include"
fi
;;

--libs)
if test "XC:/bhl/prefix-out/lib" != "X/usr/lib" -a "XC:/bhl/prefix-out/lib" != "X/usr/lib64"; then
CURLLIBDIR="-LC:/bhl/prefix-out/lib "
else
CURLLIBDIR=""
fi
if test "Xno" = "Xno"; then
echo ${CURLLIBDIR}-lcurl -lws2_32 C:/bhl/prefix/lib/zlib.lib -ladvapi32 -lcrypt32 -lbcrypt
else
echo ${CURLLIBDIR}-lcurl
fi
;;
--ssl-backends)
echo "Schannel"
;;

--static-libs)
if test "Xyes" != "Xno" ; then
echo "C:/bhl/prefix-out/lib/libcurl.lib" /machine:X86 -lws2_32 C:/bhl/prefix/lib/zlib.lib -ladvapi32 -lcrypt32 -lbcrypt
else
echo "curl was built with static libraries disabled" >&2
exit 1
fi
;;

--configure)
echo
;;

*)
echo "unknown option: $1"
usage 1
;;
esac
shift
done

exit 0
Loading

0 comments on commit 33e514e

Please sign in to comment.