forked from UltraStar-Deluxe/mxe
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.sh
More file actions
executable file
·72 lines (71 loc) · 2.8 KB
/
build.sh
File metadata and controls
executable file
·72 lines (71 loc) · 2.8 KB
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
#!/bin/sh
MXE=/tmp/mxe
TARGET=x86_64-w64-mingw32.shared
DLL_DIR=$MXE/DLLs
PORTAUDIO_NAME=portaudio_x64
if [ "`pwd`" != $MXE ] ; then
echo Please clone this repository to /tmp/mxe for reproducible builds >&2
exit 1
fi
touch src/ffmpeg.mk src/dav1d.mk src/freetype-bootstrap.mk src/libjpeg-turbo.mk src/libpng.mk src/portaudio.mk src/sqlite.mk src/lua.mk src/sdl2.mk src/sdl2_image.mk src/zlib.mk src/libwebp.mk src/tiff.mk
export SOURCE_DATE_EPOCH=0
# Replace local wrapper sources with USDX versions before building.
USDX_RAW_BASE="https://raw.githubusercontent.com/UltraStar-Deluxe/USDX/2b0ffa2e5e90b30e35f9f8f178a07a32033f451f"
fetch_wrapper() {
url="$1"
out="$2"
if command -v curl >/dev/null 2>&1; then
curl -fsSL "$url" -o "$out"
return $?
fi
if command -v wget >/dev/null 2>&1; then
wget -qO "$out" "$url"
return $?
fi
echo "Missing curl/wget to fetch USDX wrappers" >&2
return 1
}
mkdir -p src/opencvwrapper src/projectm-cwrapper
fetch_wrapper "$USDX_RAW_BASE/src/lib/openCV3/ApiWrapper.cpp" \
"src/opencvwrapper/opencv-wrapper.cpp"
fetch_wrapper "$USDX_RAW_BASE/src/lib/projectM/cwrapper/projectM-cwrapper.cpp" \
"src/projectm-cwrapper/projectM-cwrapper.cpp"
fetch_wrapper "$USDX_RAW_BASE/src/lib/projectM/cwrapper/projectM-cwrapper.h" \
"src/projectm-cwrapper/projectM-cwrapper.h"
# Force DWARF debug info and assume .loc support to avoid stabs on x86_64.
make MXE_TARGETS=$TARGET \
CFLAGS_FOR_TARGET='-O2 -gdwarf-2 -gas-loc-support' \
CXXFLAGS_FOR_TARGET='-O2 -gdwarf-2 -gas-loc-support' \
ffmpeg sdl2_image freetype-bootstrap portaudio sqlite lua opencv opencvwrapper projectm projectm-cwrapper
mkdir -p $DLL_DIR
OBJ_COPY="$MXE/usr/bin/$TARGET-objcopy"
add_dll() {
dll="$1"
base="$2"
alias_opencv="$3"
[ -x "$OBJ_COPY" ] || return 0
[ -e "$dll" ] || return 0
$OBJ_COPY --only-keep-debug "$dll" "$DLL_DIR/$base.debug"
(
cd "$DLL_DIR"
set -- `md5sum "$base.debug"`
k=$base-$1
mv "$base.debug" "$k.debug"
$OBJ_COPY -S --add-gnu-debuglink="$k.debug" "$dll" "$base.dll"
chmod a-x "$base.dll" "$k.debug"
if [ "$alias_opencv" = "alias_opencv" ] && [ "${base#opencv_}" != "$base" ]; then
cp "$base.dll" "lib$base.dll"
fi
)
}
for i in avcodec-61 avformat-61 avutil-59 swresample-5 swscale-8 libdav1d libjpeg-8 libpng16-16 libtiff-6 libwebp-7 SDL2 SDL2_image zlib1 lua54:lua libsqlite3-0:sqlite3 libfreetype-6 libportaudio-2:$PORTAUDIO_NAME libbz2 libdl libgcc_s_seh-1 libstdc++-6 libwinpthread-1; do
j=${i##*:}
i=${i%%:*}
DLL_PATH="$MXE/usr/$TARGET/bin/$i.dll"
add_dll "$DLL_PATH" "$j"
done
# Add OpenCV and wrapper DLL(s) if present.
for dll in "$MXE/usr/$TARGET/bin"/opencv_*.dll "$MXE/usr/$TARGET/bin"/libopencv_*.dll "$MXE/usr/$TARGET/bin"/opencvwrapper.dll "$MXE/usr/$TARGET/bin"/libprojectM*.dll "$MXE/usr/$TARGET/bin"/projectM-cwrapper.dll; do
base=$(basename "$dll" .dll)
add_dll "$dll" "$base"
done