mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 01:58:19 +00:00
9afe7444c1
The SDL default branch is now SDL3, so we need to check out specifically the SDL2 branch.
258 lines
7.2 KiB
Bash
Executable file
258 lines
7.2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
CURDIR="$PWD"
|
|
if [ -z ${1+x} ]; then
|
|
echo "Give a destination path where to run this script, please choose a path other than in the source directory"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z ${2+x} ]; then
|
|
echo "Specify the target system"
|
|
exit 1
|
|
fi
|
|
|
|
OS_NAME=$2
|
|
|
|
COMPILEFLAGS="-fPIC"
|
|
LINKFLAGS="-fPIC"
|
|
if [[ "${OS_NAME}" == "webasm" ]]; then
|
|
COMPILEFLAGS="-pthread -O3 -g -s USE_PTHREADS=1"
|
|
LINKFLAGS="-pthread -O3 -g -s USE_PTHREADS=1 -s ASYNCIFY=1 -s WASM=1"
|
|
fi
|
|
|
|
if [[ "${OS_NAME}" == "android" ]]; then
|
|
OS_NAME_PATH="android"
|
|
elif [[ "${OS_NAME}" == "windows" ]]; then
|
|
OS_NAME_PATH="windows"
|
|
elif [[ "${OS_NAME}" == "linux" ]]; then
|
|
OS_NAME_PATH="linux"
|
|
elif [[ "${OS_NAME}" == "webasm" ]]; then
|
|
OS_NAME_PATH="webasm"
|
|
fi
|
|
|
|
COMP_HAS_ARM32=0
|
|
COMP_HAS_ARM64=0
|
|
COMP_HAS_x86=0
|
|
COMP_HAS_x64=0
|
|
COMP_HAS_WEBASM=0
|
|
|
|
if [[ "${OS_NAME}" == "android" ]]; then
|
|
COMP_HAS_ARM32=1
|
|
COMP_HAS_ARM64=1
|
|
COMP_HAS_x86=1
|
|
COMP_HAS_x64=1
|
|
elif [[ "${OS_NAME}" == "linux" ]]; then
|
|
COMP_HAS_x64=1
|
|
elif [[ "${OS_NAME}" == "windows" ]]; then
|
|
COMP_HAS_x86=1
|
|
COMP_HAS_x64=1
|
|
elif [[ "${OS_NAME}" == "webasm" ]]; then
|
|
COMP_HAS_WEBASM=1
|
|
fi
|
|
|
|
mkdir -p "$1"
|
|
cd "$1" || exit 1
|
|
|
|
function build_cmake_lib() {
|
|
if [ ! -d "${1}" ]; then
|
|
if [ -z ${3+x} ]; then
|
|
git clone "${2}" "${1}"
|
|
else
|
|
git clone --single-branch --branch "${3}" "${2}" "${1}"
|
|
fi
|
|
fi
|
|
(
|
|
cd "${1}" || exit 1
|
|
cp "${CURDIR}"/scripts/compile_libs/cmake_lib_compile.sh cmake_lib_compile.sh
|
|
./cmake_lib_compile.sh "$_ANDROID_ABI_LEVEL" "$OS_NAME" "$COMPILEFLAGS" "$LINKFLAGS"
|
|
)
|
|
}
|
|
|
|
_ANDROID_ABI_LEVEL=24
|
|
|
|
mkdir -p compile_libs
|
|
cd compile_libs || exit 1
|
|
|
|
# start with openssl
|
|
(
|
|
_WAS_THERE_SSLFILE=1
|
|
if [ ! -d "openssl" ]; then
|
|
git clone https://github.com/openssl/openssl openssl
|
|
_WAS_THERE_SSLFILE=0
|
|
fi
|
|
(
|
|
cd openssl || exit 1
|
|
if [[ "$_WAS_THERE_SSLFILE" == 0 ]]; then
|
|
./autogen.sh
|
|
fi
|
|
cp "${CURDIR}"/scripts/compile_libs/make_lib_openssl.sh make_lib_openssl.sh
|
|
./make_lib_openssl.sh "$_ANDROID_ABI_LEVEL" "$OS_NAME" "$COMPILEFLAGS" "$LINKFLAGS"
|
|
)
|
|
)
|
|
|
|
build_cmake_lib zlib https://github.com/madler/zlib
|
|
build_cmake_lib png https://github.com/glennrp/libpng
|
|
build_cmake_lib curl https://github.com/curl/curl
|
|
build_cmake_lib freetype2 https://gitlab.freedesktop.org/freetype/freetype
|
|
build_cmake_lib sdl https://github.com/libsdl-org/SDL SDL2
|
|
build_cmake_lib ogg https://github.com/xiph/ogg
|
|
build_cmake_lib opus https://github.com/xiph/opus
|
|
|
|
(
|
|
_WAS_THERE_OPUSFILE=1
|
|
if [ ! -d "opusfile" ]; then
|
|
git clone https://github.com/xiph/opusfile opusfile
|
|
_WAS_THERE_OPUSFILE=0
|
|
fi
|
|
cd opusfile || exit 1
|
|
if [[ "$_WAS_THERE_OPUSFILE" == 0 ]]; then
|
|
./autogen.sh
|
|
fi
|
|
cp "${CURDIR}"/scripts/compile_libs/make_lib_opusfile.sh make_lib_opusfile.sh
|
|
./make_lib_opusfile.sh "$_ANDROID_ABI_LEVEL" "$OS_NAME" "$COMPILEFLAGS" "$LINKFLAGS"
|
|
)
|
|
|
|
# SQLite, just download and built by hand
|
|
if [ ! -d "sqlite3" ]; then
|
|
wget https://www.sqlite.org/2021/sqlite-amalgamation-3360000.zip
|
|
7z e sqlite-amalgamation-3360000.zip -osqlite3
|
|
fi
|
|
|
|
(
|
|
cd sqlite3 || exit 1
|
|
cp "${CURDIR}"/scripts/compile_libs/make_lib_sqlite3.sh make_lib_sqlite3.sh
|
|
./make_lib_sqlite3.sh "$_ANDROID_ABI_LEVEL" "$OS_NAME" "$COMPILEFLAGS" "$LINKFLAGS"
|
|
)
|
|
|
|
cd ..
|
|
|
|
function copy_arches_for_lib() {
|
|
if [[ "$COMP_HAS_ARM32" == "1" ]]; then
|
|
${1} arm arm
|
|
fi
|
|
if [[ "$COMP_HAS_ARM64" == "1" ]]; then
|
|
${1} arm64 arm64
|
|
fi
|
|
if [[ "$COMP_HAS_x86" == "1" ]]; then
|
|
${1} x86 32
|
|
fi
|
|
if [[ "$COMP_HAS_x64" == "1" ]]; then
|
|
${1} x86_64 64
|
|
fi
|
|
if [[ "$COMP_HAS_WEBASM" == "1" ]]; then
|
|
${1} wasm wasm
|
|
fi
|
|
}
|
|
|
|
mkdir ddnet-libs
|
|
function _copy_curl() {
|
|
mkdir -p ddnet-libs/curl/"$OS_NAME_PATH"/lib"$2"
|
|
cp compile_libs/curl/build_"$OS_NAME"_"$1"/lib/libcurl.a ddnet-libs/curl/"$OS_NAME_PATH"/lib"$2"/libcurl.a
|
|
}
|
|
|
|
copy_arches_for_lib _copy_curl
|
|
|
|
mkdir ddnet-libs
|
|
function _copy_freetype2() {
|
|
mkdir -p ddnet-libs/freetype/"$OS_NAME_PATH"/lib"$2"
|
|
cp compile_libs/freetype2/build_"$OS_NAME"_"$1"/libfreetype.a ddnet-libs/freetype/"$OS_NAME_PATH"/lib"$2"/libfreetype.a
|
|
}
|
|
|
|
copy_arches_for_lib _copy_freetype2
|
|
|
|
mkdir ddnet-libs
|
|
function _copy_sdl() {
|
|
mkdir -p ddnet-libs/sdl/"$OS_NAME_PATH"/lib"$2"
|
|
cp compile_libs/sdl/build_"$OS_NAME"_"$1"/libSDL2.a ddnet-libs/sdl/"$OS_NAME_PATH"/lib"$2"/libSDL2.a
|
|
cp compile_libs/sdl/build_"$OS_NAME"_"$1"/libSDL2main.a ddnet-libs/sdl/"$OS_NAME_PATH"/lib"$2"/libSDL2main.a
|
|
if [ ! -d "ddnet-libs/sdl/include/$OS_NAME_PATH" ]; then
|
|
mkdir -p ddnet-libs/sdl/include/"$OS_NAME_PATH"
|
|
fi
|
|
cp -R compile_libs/sdl/include/* ddnet-libs/sdl/include/"$OS_NAME_PATH"
|
|
}
|
|
|
|
copy_arches_for_lib _copy_sdl
|
|
|
|
# copy java code from SDL2
|
|
if [[ "$OS_NAME" == "android" ]]; then
|
|
rm -R ddnet-libs/sdl/java
|
|
mkdir -p ddnet-libs/sdl/java
|
|
cp -R compile_libs/sdl/android-project/app/src/main/java/org ddnet-libs/sdl/java/
|
|
fi
|
|
|
|
mkdir ddnet-libs
|
|
function _copy_ogg() {
|
|
mkdir -p ddnet-libs/opus/"$OS_NAME_PATH"/lib"$2"
|
|
cp compile_libs/ogg/build_"$OS_NAME"_"$1"/libogg.a ddnet-libs/opus/"$OS_NAME_PATH"/lib"$2"/libogg.a
|
|
}
|
|
|
|
copy_arches_for_lib _copy_ogg
|
|
|
|
mkdir ddnet-libs
|
|
function _copy_opus() {
|
|
mkdir -p ddnet-libs/opus/"$OS_NAME_PATH"/lib"$2"
|
|
cp compile_libs/opus/build_"$OS_NAME"_"$1"/libopus.a ddnet-libs/opus/"$OS_NAME_PATH"/lib"$2"/libopus.a
|
|
}
|
|
|
|
copy_arches_for_lib _copy_opus
|
|
|
|
mkdir ddnet-libs
|
|
function _copy_opusfile() {
|
|
mkdir -p ddnet-libs/opus/"$OS_NAME_PATH"/lib"$2"
|
|
cp compile_libs/opusfile/build_"$OS_NAME"_"$1"/libopusfile.a ddnet-libs/opus/"$OS_NAME_PATH"/lib"$2"/libopusfile.a
|
|
}
|
|
|
|
copy_arches_for_lib _copy_opusfile
|
|
|
|
mkdir ddnet-libs
|
|
function _copy_sqlite3() {
|
|
mkdir -p ddnet-libs/sqlite3/"$OS_NAME_PATH"/lib"$2"
|
|
cp compile_libs/sqlite3/build_"$OS_NAME"_"$1"/sqlite3.a ddnet-libs/sqlite3/"$OS_NAME_PATH"/lib"$2"/libsqlite3.a
|
|
}
|
|
|
|
copy_arches_for_lib _copy_sqlite3
|
|
|
|
mkdir ddnet-libs
|
|
function _copy_openssl() {
|
|
mkdir -p ddnet-libs/openssl/"$OS_NAME_PATH"/lib"$2"
|
|
mkdir -p ddnet-libs/openssl/include
|
|
mkdir -p ddnet-libs/openssl/include/"$OS_NAME_PATH"
|
|
cp compile_libs/openssl/build_"$OS_NAME"_"$1"/libcrypto.a ddnet-libs/openssl/"$OS_NAME_PATH"/lib"$2"/libcrypto.a
|
|
cp compile_libs/openssl/build_"$OS_NAME"_"$1"/libssl.a ddnet-libs/openssl/"$OS_NAME_PATH"/lib"$2"/libssl.a
|
|
cp -R compile_libs/openssl/build_"$OS_NAME"_"$1"/include/* ddnet-libs/openssl/include/"$OS_NAME_PATH"
|
|
cp -R compile_libs/openssl/include/* ddnet-libs/openssl/include
|
|
}
|
|
|
|
copy_arches_for_lib _copy_openssl
|
|
|
|
mkdir ddnet-libs
|
|
function _copy_zlib() {
|
|
# copy headers
|
|
(
|
|
cd compile_libs/zlib || exit 1
|
|
find . -maxdepth 1 -iname '*.h' -print0 | while IFS= read -r -d $'\0' file; do
|
|
mkdir -p ../../ddnet-libs/zlib/include/"$(dirname "$file")"
|
|
cp "$file" ../../ddnet-libs/zlib/include/"$(dirname "$file")"
|
|
done
|
|
|
|
cd build_"$OS_NAME"_"$1" || exit 1
|
|
find . -maxdepth 1 -iname '*.h' -print0 | while IFS= read -r -d $'\0' file; do
|
|
mkdir -p ../../../ddnet-libs/zlib/include/"$OS_NAME_PATH"/"$(dirname "$file")"
|
|
cp "$file" ../../../ddnet-libs/zlib/include/"$OS_NAME_PATH"/"$(dirname "$file")"
|
|
done
|
|
)
|
|
|
|
mkdir -p ddnet-libs/zlib/"$OS_NAME_PATH"/lib"$2"
|
|
cp compile_libs/zlib/build_"$OS_NAME"_"$1"/libz.a ddnet-libs/zlib/"$OS_NAME_PATH"/lib"$2"/libz.a
|
|
}
|
|
|
|
copy_arches_for_lib _copy_zlib
|
|
|
|
mkdir ddnet-libs
|
|
function _copy_png() {
|
|
mkdir -p ddnet-libs/png/"$OS_NAME_PATH"/lib"$2"
|
|
cp compile_libs/png/build_"$OS_NAME"_"$1"/libpng16.a ddnet-libs/png/"$OS_NAME_PATH"/lib"$2"/libpng16.a
|
|
}
|
|
|
|
copy_arches_for_lib _copy_png
|