-
Notifications
You must be signed in to change notification settings - Fork 16
/
2_build_toolchain.sh
executable file
·133 lines (106 loc) · 3.5 KB
/
2_build_toolchain.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/bin/bash
# abort on error
set -e
export WORKSPACE=$PWD
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source $SCRIPT_DIR/../shared/import.sh
# Number of CPU
os=`uname`
if [ $os = "Darwin" ] ; then
nproc=$(getconf _NPROCESSORS_ONLN)
CP_ARGS="-r"
else
nproc=$(nproc)
CP_ARGS="-rup"
fi
# Use ccache?
test_ccache
if [ ! -f .patches-applied ]; then
echo "Patching libraries"
patches_common
# Fix libsndfile
(cd $LIBSNDFILE_DIR
patch -Np1 < $SCRIPT_DIR/../shared/extra/libsndfile.patch
autoreconf -fi
)
# disable unsupported compiler flags by emcc clang in libogg
perl -pi -e 's/-O20/-g0 -O2/g' $LIBOGG_DIR/configure
# hack to not use hidden funtion
# (see https://groups.google.com/forum/#!topic/emscripten-discuss/YM3jC_qQoPk)
perl -pi -e 's/HAVE_ARC4RANDOM\)/NO_ARC4RANDOM\)/' $EXPAT_DIR/ConfigureChecks.cmake
if [ "$USE_WASM_SIMD" == "1" ]; then
(cd $PIXMAN_DIR
patch -Np2 < ../pixman-wasm.patch
)
fi
cp $CP_ARGS icu icu-native
touch .patches-applied
fi
if [ "$USE_WASM_SIMD" == "1" ]; then
CFLAGS_SIMD="-msimd128"
fi
export PLATFORM_PREFIX=$WORKSPACE
export CONFIGURE_WRAPPER=emconfigure
export CMAKE_WRAPPER=emcmake
export MAKEFLAGS="-j${nproc:-2}"
function set_build_flags {
export PATH="$PATH:$PLATFORM_PREFIX/bin" # for icu-config
export CFLAGS="-O2 -g0 -sUSE_SDL=0 $CFLAGS_SIMD"
export CXXFLAGS="$CFLAGS"
export CPPFLAGS="-I$PLATFORM_PREFIX/include"
export LDFLAGS="-L$PLATFORM_PREFIX/lib"
export EM_CFLAGS="-Wno-warn-absolute-paths"
export EMCC_CFLAGS="$EM_CFLAGS"
export EM_PKG_CONFIG_PATH="$PLATFORM_PREFIX/lib/pkgconfig"
if [ "$ENABLE_CCACHE" ]; then
export CC="ccache gcc"
export CXX="ccache g++"
fi
# force mmap support in mpg123 (actually unused, but needed for building)
export ac_cv_func_mmap_fixed_mapped=yes
}
install_lib_icu_native
echo "Preparing toolchain"
if ! hash emcc >/dev/null 2>&1; then
# Set the current Emscripten path
cd emsdk-portable
source ./emsdk_env.sh
fi
cd $WORKSPACE
# Install libraries
set_build_flags
if [ $os = "Darwin" ] ; then
# Workaround wrong libtool being detected
# Do not use this on Linux, fails with autoconf 2.69
export TARGET_HOST="asmjs-unknown-emscripten"
fi
install_lib_zlib
install_lib $LIBPNG_DIR $LIBPNG_ARGS
install_lib_cmake $FREETYPE_DIR $FREETYPE_ARGS_CMAKE -DFT_DISABLE_HARFBUZZ=ON
install_lib_cmake $HARFBUZZ_DIR $HARFBUZZ_ARGS -DCMAKE_FIND_ROOT_PATH=$PLATFORM_PREFIX
install_lib_cmake $FREETYPE_DIR $FREETYPE_ARGS_CMAKE -DFT_DISABLE_HARFBUZZ=OFF -DCMAKE_FIND_ROOT_PATH=$PLATFORM_PREFIX
install_lib_meson $PIXMAN_DIR $PIXMAN_ARGS
install_lib_cmake $EXPAT_DIR $EXPAT_ARGS
install_lib $LIBOGG_DIR $LIBOGG_ARGS
install_lib $LIBVORBIS_DIR $LIBVORBIS_ARGS
install_lib $MPG123_DIR $MPG123_ARGS
install_lib $LIBSNDFILE_DIR $LIBSNDFILE_ARGS
install_lib_cmake $LIBXMP_LITE_DIR $LIBXMP_LITE_ARGS
install_lib $SPEEXDSP_DIR $SPEEXDSP_ARGS
#install_lib_cmake $WILDMIDI_DIR $WILDMIDI_ARGS
install_lib $OPUS_DIR $OPUS_ARGS --disable-stack-protector
install_lib $OPUSFILE_DIR $OPUSFILE_ARGS
install_lib_cmake $FLUIDSYNTH_DIR $FLUIDSYNTH_ARGS
install_lib_cmake $NLOHMANNJSON_DIR $NLOHMANNJSON_ARGS
install_lib_meson $INIH_DIR $INIH_ARGS
#install_lib $LHASA_DIR $LHASA_ARGS
install_lib_cmake $FMT_DIR $FMT_ARGS
# emscripten TARGET_HOST does not work for all libraries but SDL2 requires it
export TARGET_HOST="asmjs-unknown-emscripten"
rm -f config.cache
install_lib $SDL2_DIR $SDL2_ARGS --disable-assembly --disable-threads --disable-cpuinfo
rm -f config.cache
unset TARGET_HOST
install_lib_icu_cross
icu_force_data_install
install_lib_liblcf