2022-03-13 05:53:21 +00:00
#!/bin/bash
set -e
set -x
set -u
2023-11-24 11:14:56 +00:00
SCRIPT_DIR = $( cd -- " $( dirname -- " ${ BASH_SOURCE [0] } " ) " & >/dev/null && pwd )
2022-03-13 05:53:21 +00:00
export GOOS = windows
export GOARCH = amd64
export GOBIN = " $SCRIPT_DIR " /bin/${ GOOS } -${ GOARCH }
ext = .exe
TARGET_TRIPLET = x86_64-w64-mingw32
export CC = " ${ TARGET_TRIPLET } " -gcc
export CXX = " ${ TARGET_TRIPLET } " -g++
2023-11-24 11:14:56 +00:00
export AR = " ${ TARGET_TRIPLET } " -ar
export LD = " ${ TARGET_TRIPLET } " -ld
export OBJCOPY = " ${ TARGET_TRIPLET } " -objcopy
export RANLIB = " ${ TARGET_TRIPLET } " -ranlib
export SIZE = " ${ TARGET_TRIPLET } " -size
export STRIP = " ${ TARGET_TRIPLET } " -strip
2022-03-13 05:53:21 +00:00
export PKG_CONFIG_PATH = " ${ TARGET_TRIPLET } " /lib/pkgconfig
thirdparty_includes = " $SCRIPT_DIR " /include
2024-01-22 01:14:20 +00:00
winsdk_version = 10.0.22621
export CPATH = " $thirdparty_includes : $thirdparty_includes /winfsp: $thirdparty_includes /windows/splat/sdk/Include/ ${ winsdk_version } : $thirdparty_includes /windows/splat/sdk/Include/ ${ winsdk_version } /winrt: $thirdparty_includes /libnp/include:/usr/ ${ TARGET_TRIPLET } /include "
2022-03-13 05:53:21 +00:00
# export CGO_CFLAGS="-I$thirdparty_includes -I$thirdparty_includes/winfsp -I/usr/${TARGET_TRIPLET}/include"
# export PATH="$GOBIN:$PATH"
export CGO_ENABLED = 1
2024-01-22 01:17:17 +00:00
if [ ! -d " $thirdparty_includes /windows/splat/sdk/Include/ ${ winsdk_version } " ] ; then
if command -v xwin 2>/dev/null >/dev/null; then
xwin splat --preserve-ms-arch-notation --output= " $thirdparty_includes /windows/splat "
else
echo " ERROR: xwin not found and $thirdparty_includes /windows/splat does not exist. Please install the xwin tool from https://github.com/Jake-Shadle/xwin. " >& 2
exit 1
fi
# patch pragma error
srcdir = " $( pwd ) "
( cd " $thirdparty_includes /windows/splat/sdk/Include/ ${ winsdk_version } /winrt " && patch -u -p1 -N -i " $srcdir /winrt.1.patch " )
fi
2022-03-13 05:53:21 +00:00
mkdir -p " $thirdparty_includes "
2023-11-24 11:14:56 +00:00
if [ ! -d " $thirdparty_includes /libnp " ] ; then
wget -q -O libnp.zip https://github.com/delthas/libnp/archive/291aeb5d56d5b90f89ef8a271d0803a698488ca6.zip
2024-01-22 01:16:23 +00:00
wget -q -O libnp.1.patch https://github.com/delthas/libnp/pull/1.patch
srcdir = " $( pwd ) "
2023-11-24 11:14:56 +00:00
7z x libnp.zip 'libnp-291aeb5d56d5b90f89ef8a271d0803a698488ca6/*' -o" $thirdparty_includes " /
rm libnp.zip
mv " $thirdparty_includes /libnp-291aeb5d56d5b90f89ef8a271d0803a698488ca6 " " $thirdparty_includes /libnp "
(
cd " $thirdparty_includes /libnp/ "
2024-01-22 01:16:23 +00:00
patch -p1 -N -i " $srcdir /libnp.1.patch "
2023-11-24 11:14:56 +00:00
mkdir -p build
cd build
cmake \
-DCMAKE_SYSTEM_NAME= Windows \
-DCMAKE_SYSTEM_PROCESSOR= \
-DCMAKE_AR= " $AR " \
-DCMAKE_ASM_COMPILER= " $CC " \
-DCMAKE_C_COMPILER= " $CC " \
-DCMAKE_CXX_COMPILER= " $CXX " \
-DCMAKE_LINKER= " $LD " \
-DCMAKE_OBJCOPY= " $OBJCOPY " \
-DCMAKE_RANLIB= " $RANLIB " \
-DCMAKE_SIZE= " $SIZE " \
-DCMAKE_STRIP= " $STRIP " \
2024-01-22 01:14:20 +00:00
-DCMAKE_C_FLAGS= " -I $thirdparty_includes /windows/splat/sdk/Include/ ${ winsdk_version } /winrt -I/usr/ ${ TARGET_TRIPLET } /include " \
-DCMAKE_CXX_FLAGS= " -I $thirdparty_includes /windows/splat/sdk/Include/ ${ winsdk_version } /winrt -I/usr/ ${ TARGET_TRIPLET } /include " \
2023-11-24 11:14:56 +00:00
-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM= NEVER \
-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY= ONLY \
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE= ONLY \
..
make
)
2023-11-28 10:52:04 +00:00
mkdir -p " $GOBIN "
cp " $thirdparty_includes /libnp/libnp/build " /*.dll " $GOBIN "
2023-11-24 11:14:56 +00:00
fi
if [ ! -d " $thirdparty_includes /winfsp " ] ; then
2022-03-13 05:53:21 +00:00
wget -q -O winfsp.zip https://github.com/billziss-gh/winfsp/archive/release/1.2.zip
7z e winfsp.zip 'winfsp-release-1.2/inc/fuse/*' -o" $thirdparty_includes " /winfsp
rm winfsp.zip
fi
2023-11-24 11:14:56 +00:00
for bin in auto-restart-voicemeeter foobar2000 tunadish tunaposter prime4 np; do
2022-03-13 05:53:21 +00:00
cd " $SCRIPT_DIR / $bin "
go build -ldflags "-s -w" -o " $GOBIN / $bin $ext " -v
done