diff --git a/external_deps/build.sh b/external_deps/build.sh index a068ae5461..f7201ebbde 100755 --- a/external_deps/build.sh +++ b/external_deps/build.sh @@ -16,6 +16,32 @@ CURL="$(command -v curl)" # are the same as the ones when extracting from the downloaded packages. DEPS_VERSION=10 +# Package download pages +PKGCONFIG_BASEURL='https://pkg-config.freedesktop.org/releases' +NASM_BASEURL='https://www.nasm.us/pub/nasm/releasebuilds' +ZLIB_BASEURL='https://zlib.net/fossils' +GMP_BASEURL='https://gmplib.org/download/gmp' +NETTLE_BASEURL='https://mirror.cyberbits.eu/gnu/nettle' +CURL_BASEURL='https://curl.se/download' +SDL2_BASEURL='https://www.libsdl.org/release' +GLEW_BASEURL='https://github.com/nigels-com/glew/releases' +# Index: https://download.sourceforge.net/libpng/files/libpng16 +PNG_BASEURL='https://sourceforge.net/projects/libpng/files/libpng16' +# Index: https://downloads.sourceforge.net/project/libjpeg-turbo +JPEG_BASEURL='https://sourceforge.net/projects/libjpeg-turbo/files' +# Index: https://storage.googleapis.com/downloads.webmproject.org/releases/webp/index.html +WEBP_BASEURL='https://storage.googleapis.com/downloads.webmproject.org/releases/webp' +OPENAL_BASEURL='https://openal-soft.org/openal-releases' +OGG_BASEURL='https://downloads.xiph.org/releases/ogg' +VORBIS_BASEURL='https://downloads.xiph.org/releases/vorbis' +OPUS_BASEURL='https://downloads.xiph.org/releases/opus' +OPUSFILE_BASEURL='https://downloads.xiph.org/releases/opus' +# No index. +NACLSDK_BASEURL='https://storage.googleapis.com/nativeclient-mirror/nacl/nacl_sdk' +NCURSES_BASEURL='https://ftpmirror.gnu.org/gnu/ncurses' +WASISDK_BASEURL='https://github.com/WebAssembly/wasi-sdk/releases' +WASMTIME_BASEURL='https://github.com/bytecodealliance/wasmtime/releases' + # Package versions PKGCONFIG_VERSION=0.29.2 NASM_VERSION=2.16.01 @@ -28,13 +54,11 @@ GLEW_VERSION=2.2.0 PNG_VERSION=1.6.39 JPEG_VERSION=2.1.5.1 WEBP_VERSION=1.3.2 -FREETYPE_VERSION=2.13.0 OPENAL_VERSION=1.23.1 OGG_VERSION=1.3.5 VORBIS_VERSION=1.3.7 OPUS_VERSION=1.4 OPUSFILE_VERSION=0.12 -LUA_VERSION=5.4.4 NACLSDK_VERSION=44.0.2403.155 NCURSES_VERSION=6.2 WASISDK_VERSION=16.0 @@ -124,7 +148,10 @@ download_extract() { local our_mirror="https://dl.unvanquished.net/deps/original/${1}" local tarball_file="${DOWNLOAD_DIR}/${1}"; shift - if "${prefer_ours}" + if "${require_theirs}" + then + download "${tarball_file}" "${@}" + elif "${prefer_ours}" then download "${tarball_file}" "${our_mirror}" "${@}" else @@ -142,7 +169,7 @@ build_pkgconfig() { local archive_name="${dir_name}.tar.gz" download_extract pkgconfig "${archive_name}" \ - "http://pkgconfig.freedesktop.org/releases/${archive_name}" + "${PKGCONFIG_BASEURL}/${archive_name}" "${download_only}" && return @@ -161,7 +188,7 @@ build_nasm() { local archive_name="${dir_name}-macosx.zip" download_extract nasm "${archive_name}" \ - "https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VERSION}/macosx/${archive_name}" + "${NASM_BASEURL}/${NASM_VERSION}/macosx/${archive_name}" "${download_only}" && return @@ -181,7 +208,7 @@ build_zlib() { local archive_name="${dir_name}.tar.gz" download_extract zlib "${archive_name}" \ - "https://zlib.net/fossils/${archive_name}" \ + "${ZLIB_BASEURL}/${archive_name}" \ "https://github.com/madler/zlib/releases/download/v${ZLIB_VERSION}/${archive_name}" "${download_only}" && return @@ -207,7 +234,7 @@ build_gmp() { local archive_name="${dir_name}.tar.bz2" download_extract gmp "${archive_name}" \ - "https://gmplib.org/download/gmp/${archive_name}" \ + "${GMP_BASEURL}/${archive_name}" \ "https://ftpmirror.gnu.org/gnu/gmp/${archive_name}" \ "https://ftp.gnu.org/gnu/gmp/${archive_name}" @@ -252,7 +279,7 @@ build_nettle() { local archive_name="${dir_name}.tar.gz" download_extract nettle "${archive_name}" \ - "https://ftpmirror.gnu.org/gnu/nettle/${archive_name}" \ + "${NETTLE_BASEURL}/${archive_name}" \ "https://ftp.gnu.org/gnu/nettle/${archive_name}" "${download_only}" && return @@ -270,7 +297,7 @@ build_curl() { local archive_name="${dir_name}.tar.xz" download_extract curl "${archive_name}" \ - "https://curl.se/download/${archive_name}" \ + "${CURL_BASEURL}/${archive_name}" \ "https://github.com/curl/curl/releases/download/curl-${CURL_VERSION//./_}/${archive_name}" "${download_only}" && return @@ -302,7 +329,7 @@ build_sdl2() { esac download_extract sdl2 "${archive_name}" \ - "https://www.libsdl.org/release/${archive_name}" \ + "${SDL2_BASEURL}/${archive_name}" \ "https://github.com/libsdl-org/SDL/releases/download/release-${SDL2_VERSION}/${archive_name}" "${download_only}" && return @@ -360,7 +387,7 @@ build_glew() { local archive_name="${dir_name}.tgz" download_extract glew "${archive_name}" \ - "https://github.com/nigels-com/glew/releases/download/glew-${GLEW_VERSION}/${archive_name}" \ + "${GLEW_BASEURL}/download/glew-${GLEW_VERSION}/${archive_name}" \ "https://downloads.sourceforge.net/project/glew/glew/${GLEW_VERSION}/${archive_name}" "${download_only}" && return @@ -395,7 +422,7 @@ build_png() { local archive_name="${dir_name}.tar.xz" download_extract png "${archive_name}" \ - "https://download.sourceforge.net/libpng/${archive_name}" + "${PNG_BASEURL}/${PNG_VERSION}/${archive_name}" "${download_only}" && return @@ -412,7 +439,7 @@ build_jpeg() { local archive_name="${dir_name}.tar.gz" download_extract jpeg "${archive_name}" \ - "https://downloads.sourceforge.net/project/libjpeg-turbo/${JPEG_VERSION}/${archive_name}" + "${JPEG_BASEURL}/${JPEG_VERSION}/${archive_name}" "${download_only}" && return @@ -483,7 +510,7 @@ build_webp() { local archive_name="${dir_name}.tar.gz" download_extract webp "${archive_name}" \ - "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/${archive_name}" + "${WEBP_BASEURL}/${archive_name}" "${download_only}" && return @@ -494,25 +521,6 @@ build_webp() { make install } -# Build FreeType -build_freetype() { - local dir_name="freetype-${FREETYPE_VERSION}" - local archive_name="${dir_name}.tar.xz" - - download_extract freetype "${archive_name}" \ - "https://download.savannah.gnu.org/releases/freetype/${archive_name}" - - "${download_only}" && return - - cd "${dir_name}" - # The default -O2 is dropped when there's user-provided CFLAGS. - CFLAGS="${CFLAGS} -O2" ./configure --host="${HOST}" --prefix="${PREFIX}" --libdir="${PREFIX}/lib" "${CONFIGURE_SHARED[@]}" --without-bzip2 --without-png --with-harfbuzz=no --with-brotli=no - make - make install - cp -a "${PREFIX}/include/freetype2" "${PREFIX}/include/freetype" - mv "${PREFIX}/include/freetype" "${PREFIX}/include/freetype2/freetype" -} - # Build OpenAL build_openal() { case "${PLATFORM}" in @@ -533,7 +541,7 @@ build_openal() { esac download_extract openal "${archive_name}" \ - "https://openal-soft.org/openal-releases/${archive_name}" \ + "${OPENAL_BASEURL}/${archive_name}" \ "https://github.com/kcat/openal-soft/releases/download/${OPENAL_VERSION}/${archive_name}" \ "${download_only}" && return @@ -575,7 +583,7 @@ build_ogg() { local archive_name="libogg-${OGG_VERSION}.tar.xz" download_extract ogg "${archive_name}" \ - "https://downloads.xiph.org/releases/ogg/${archive_name}" + "${OGG_BASEURL}/${archive_name}" "${download_only}" && return @@ -595,7 +603,7 @@ build_vorbis() { local archive_name="${dir_name}.tar.xz" download_extract vorbis "${archive_name}" \ - "https://downloads.xiph.org/releases/vorbis/${archive_name}" + "${VORBIS_BASEURL}/${archive_name}" "${download_only}" && return @@ -612,7 +620,7 @@ build_opus() { local archive_name="${dir_name}.tar.gz" download_extract opus "${archive_name}" \ - "https://downloads.xiph.org/releases/opus/${archive_name}" + "${OPUS_BASEURL}/${archive_name}" "${download_only}" && return @@ -637,7 +645,7 @@ build_opusfile() { local archive_name="${dir_name}.tar.gz" download_extract opusfile "${archive_name}" \ - "https://downloads.xiph.org/releases/opus/${archive_name}" + "${OPUSFILE_BASEURL}/${archive_name}" "${download_only}" && return @@ -648,53 +656,13 @@ build_opusfile() { make install } -# Build Lua -build_lua() { - local dir_name="lua-${LUA_VERSION}" - local archive_name="${dir_name}.tar.gz" - - download_extract lua "${archive_name}" \ - "https://www.lua.org/ftp/${archive_name}" - - "${download_only}" && return - - cd "${dir_name}" - case "${PLATFORM}" in - windows-*-*) - local LUA_PLATFORM=mingw - ;; - macos-*-*) - local LUA_PLATFORM=macosx - ;; - linux-*-*) - local LUA_PLATFORM=linux - ;; - *) - log error 'Unsupported platform for Lua' - ;; - esac - make "${LUA_PLATFORM}" CC="${CC}" AR="${AR} rcu" RANLIB="${RANLIB}" MYCFLAGS="${CFLAGS}" MYLDFLAGS="${LDFLAGS}" - case "${PLATFORM}" in - windows-*-mingw) - make install TO_BIN="lua.exe luac.exe" TO_LIB="liblua.a" INSTALL_TOP="${PREFIX}" - ;; - windows-*-msvc) - make install TO_BIN="lua.exe luac.exe lua54.dll" TO_LIB="liblua.a" INSTALL_TOP="${PREFIX}" - touch "${PREFIX}/lib/lua54.dll.a" - ;; - *) - make install INSTALL_TOP="${PREFIX}" - ;; - esac -} - # Build ncurses build_ncurses() { local dir_name="ncurses-${NCURSES_VERSION}" local archive_name="${dir_name}.tar.gz" download_extract ncurses "${archive_name}" \ - "https://ftpmirror.gnu.org/gnu/ncurses/${archive_name}" \ + "${NCURSES_BASEURL}/${archive_name}" \ "https://ftp.gnu.org/pub/gnu/ncurses/${archive_name}" "${download_only}" && return @@ -733,7 +701,7 @@ build_wasisdk() { local WASISDK_VERSION_MAJOR="$(echo "${WASISDK_VERSION}" | cut -f1 -d'.')" download_extract wasisdk "${archive_name}" \ - "https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASISDK_VERSION_MAJOR}/${archive_name}" + "${WASISDK_BASEURL}/download/wasi-sdk-${WASISDK_VERSION_MAJOR}/${archive_name}" "${download_only}" && return @@ -772,7 +740,7 @@ build_wasmtime() { local archive_name="${folder_name}.${ARCHIVE_EXT}" download_extract wasmtime "${archive_name}" \ - "https://github.com/bytecodealliance/wasmtime/releases/download/v${WASMTIME_VERSION}/${archive_name}" + "${WASMTIME_BASEURL}/download/v${WASMTIME_VERSION}/${archive_name}" "${download_only}" && return @@ -818,7 +786,7 @@ build_naclsdk() { local archive_name="naclsdk_${NACLSDK_PLATFORM}-${NACLSDK_VERSION}.${TAR_EXT}.bz2" download_extract naclsdk "${archive_name}" \ - "https://storage.googleapis.com/nativeclient-mirror/nacl/nacl_sdk/${NACLSDK_VERSION}/naclsdk_${NACLSDK_PLATFORM}.tar.bz2" + "${NACLSDK_BASEURL}/${NACLSDK_VERSION}/naclsdk_${NACLSDK_PLATFORM}.tar.bz2" "${download_only}" && return @@ -875,20 +843,6 @@ build_naclsdk() { esac } -build_naclports() { - local archive_name="naclports-${NACLSDK_VERSION}.tar.bz2" - - download_extract naclports "${archive_name}" \ - "https://storage.googleapis.com/nativeclient-mirror/nacl/nacl_sdk/${NACLSDK_VERSION}/naclports.tar.bz2" - - "${download_only}" && return - - mkdir -p "${PREFIX}/pnacl_deps/"{include,lib} - cp pepper_*"/ports/include/"{lauxlib.h,lua.h,lua.hpp,luaconf.h,lualib.h} "${PREFIX}/pnacl_deps/include" - cp -a pepper_*"/ports/include/freetype2" "${PREFIX}/pnacl_deps/include" - cp pepper_*"/ports/lib/newlib_pnacl/Release/"{liblua.a,libfreetype.a,libpng16.a} "${PREFIX}/pnacl_deps/lib" -} - # The import libraries generated by MinGW seem to have issues, so we use LLVM's version instead. # So LLVM must be installed, e.g. 'sudo apt install llvm' build_genlib() { @@ -1058,7 +1012,7 @@ common_setup_arch() { # point did not implement certain printf specifiers, in particular %lld (long long). # Lua does use this one, which results in compiler warnings. But this is OK because # the Windows build of Lua is only used in developer gamelogic builds, and Microsoft -# supports %lld since Visual Studio 2013. +# supports %lld since Visual Studio 2013. Also we don't build Lua anymore. common_setup_msvc() { CONFIGURE_SHARED=(--enable-shared --disable-static) # Libtool bug prevents -static-libgcc from being set in LDFLAGS @@ -1148,29 +1102,29 @@ setup_linux-arm64-default() { common_setup linux aarch64-unknown-linux-gnu } -base_windows_amd64_msvc_packages='pkgconfig zlib gmp nettle curl sdl2 glew png jpeg webp freetype openal ogg vorbis opus opusfile lua naclsdk naclports genlib' +base_windows_amd64_msvc_packages='pkgconfig zlib gmp nettle curl sdl2 glew png jpeg webp openal ogg vorbis opus opusfile naclsdk genlib' all_windows_amd64_msvc_packages="${base_windows_amd64_msvc_packages}" base_windows_i686_msvc_packages="${base_windows_amd64_msvc_packages}" all_windows_i686_msvc_packages="${base_windows_amd64_msvc_packages}" -base_windows_amd64_mingw_packages='zlib gmp nettle curl sdl2 glew png jpeg webp freetype openal ogg vorbis opus opusfile lua naclsdk naclports' +base_windows_amd64_mingw_packages='zlib gmp nettle curl sdl2 glew png jpeg webp openal ogg vorbis opus opusfile naclsdk' all_windows_amd64_mingw_packages="${base_windows_amd64_mingw_packages}" base_windows_i686_mingw_packages="${base_windows_amd64_mingw_packages}" all_windows_i686_mingw_packages="${base_windows_amd64_mingw_packages}" -base_macos_amd64_default_packages='pkgconfig nasm gmp nettle sdl2 glew png jpeg webp freetype openal ogg vorbis opus opusfile lua naclsdk naclports' +base_macos_amd64_default_packages='pkgconfig nasm gmp nettle sdl2 glew png jpeg webp openal ogg vorbis opus opusfile naclsdk' all_macos_amd64_default_packages="${base_macos_amd64_default_packages}" -base_linux_amd64_default_packages='naclsdk naclports' -all_linux_amd64_default_packages='zlib gmp nettle curl sdl2 glew png jpeg webp freetype openal ogg vorbis opus opusfile lua naclsdk naclports' +base_linux_amd64_default_packages='naclsdk' +all_linux_amd64_default_packages='zlib gmp nettle curl sdl2 glew png jpeg webp openal ogg vorbis opus opusfile naclsdk' base_linux_i686_default_packages="${base_linux_amd64_default_packages}" all_linux_i686_default_packages="${all_linux_amd64_default_packages}" base_linux_arm64_default_packages='naclsdk' -all_linux_arm64_default_packages='zlib gmp nettle curl sdl2 glew png jpeg webp freetype openal ogg vorbis opus opusfile lua naclsdk' +all_linux_arm64_default_packages='zlib gmp nettle curl sdl2 glew png jpeg webp openal ogg vorbis opus opusfile naclsdk' base_linux_armhf_default_packages="${base_linux_arm64_default_packages}" all_linux_armhf_default_packages="${all_linux_arm64_default_packages}" @@ -1198,7 +1152,7 @@ errorHelp() { \tbuild-macos — platforms buildable on macos: ${macos_build_platforms} Packages: - \tpkgconfig nasm zlib gmp nettle curl sdl2 glew png jpeg webp freetype openal ogg vorbis opus opusfile lua naclsdk naclports wasisdk wasmtime + \tpkgconfig nasm zlib gmp nettle curl sdl2 glew png jpeg webp openal ogg vorbis opus opusfile naclsdk wasisdk wasmtime Virtual packages: \tbase — build packages for pre-built binaries to be downloaded when building the game @@ -1239,6 +1193,7 @@ errorHelp() { download_only='false' prefer_ours='false' +require_theirs='false' while [ -n "${1:-}" ] do case "${1-}" in @@ -1250,6 +1205,10 @@ do prefer_ours='true' shift ;; + '--require-theirs') + require_theirs='true' + shift + ;; '--'*) helpError ;;