77 lines
2.6 KiB
Bash
Executable File
77 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
pushd $(dirname "${0}") >/dev/null
|
|
HACKED_BASE=$(pwd -L)
|
|
FOLDER_NAME=inkyblackness-hacked
|
|
|
|
echo "Cleaning output directories..."
|
|
rm -rf _build
|
|
rm main-res.syso
|
|
|
|
mkdir -p $HACKED_BASE/_build/linux/$FOLDER_NAME
|
|
mkdir -p $HACKED_BASE/_build/win/$FOLDER_NAME
|
|
|
|
echo "Determining version"
|
|
|
|
MAJOR=$(date +%Y)
|
|
MINOR=$(date +%m)
|
|
PATCH=$(date +%d)
|
|
VERSION=$(git describe --tags)
|
|
if [ $? -ne 0 ]; then
|
|
echo "Could not determine tag, defaulting to revision for version"
|
|
REV=$(git rev-parse --short HEAD)
|
|
VERSION="rev$REV"
|
|
else
|
|
VERSION_RAW=$(echo "$VERSION" | cut -d'-' -f 1 | cut -d'v' -f 2)
|
|
fi
|
|
|
|
EXTRA=$(echo "$VERSION" | cut -d'-' -f 2)
|
|
if [[ "$VERSION" == "$EXTRA" ]]; then
|
|
MAJOR=$(echo "$VERSION_RAW" | cut -d'.' -f 1)
|
|
MINOR=$(echo "$VERSION_RAW" | cut -d'.' -f 2)
|
|
PATCH=$(echo "$VERSION_RAW" | cut -d'.' -f 3)
|
|
fi
|
|
echo "Determined version: $VERSION ($MAJOR.$MINOR.$PATCH)"
|
|
|
|
echo "Preparing build resources"
|
|
mkdir -p $HACKED_BASE/_build/win_temp
|
|
cp $HACKED_BASE/_resources/build/win/* $HACKED_BASE/_build/win_temp
|
|
sed -i "s/§MAJOR/$MAJOR/g" $HACKED_BASE/_build/win_temp/hacked.exe.manifest
|
|
sed -i "s/§MINOR/$MINOR/g" $HACKED_BASE/_build/win_temp/hacked.exe.manifest
|
|
sed -i "s/§PATCH/$PATCH/g" $HACKED_BASE/_build/win_temp/hacked.exe.manifest
|
|
x86_64-w64-mingw32-windres -o main-res.syso $HACKED_BASE/_build/win_temp/hacked.rc
|
|
|
|
echo "Building executables..."
|
|
go build -gcflags "-d=checkptr=0" -ldflags "-X main.version=$VERSION" -a -o $HACKED_BASE/_build/linux/$FOLDER_NAME/hacked -trimpath $(pwd) .
|
|
GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CXX=x86_64-w64-mingw32-g++ CC=x86_64-w64-mingw32-gcc go build -gcflags "-d=checkptr=0" -ldflags "-X main.version=$VERSION -H=windowsgui" -a -o $HACKED_BASE/_build/win/$FOLDER_NAME/hacked.exe -trimpath $(pwd) .
|
|
|
|
echo "Copying distribution resources..."
|
|
|
|
for os in "linux" "win"; do
|
|
packageDir=$HACKED_BASE/_build/$os/$FOLDER_NAME
|
|
|
|
cp $HACKED_BASE/LICENSE $packageDir
|
|
cp -R $HACKED_BASE/_resources/dist/* $packageDir
|
|
done
|
|
|
|
for lib in "libgcc_s_seh-1.dll" "libstdc++-6.dll" "libwinpthread-1.dll"; do
|
|
for base in "/usr/x86_64-w64-mingw32/bin" "/usr/lib/gcc/x86_64-w64-mingw32/10-win32" "/usr/x86_64-w64-mingw32/lib"; do
|
|
if [ -e $base/$lib ]; then
|
|
cp $base/$lib $HACKED_BASE/_build/win/$FOLDER_NAME
|
|
fi
|
|
done
|
|
if [ ! -f $HACKED_BASE/_build/win/$FOLDER_NAME/$lib ]; then
|
|
echo " FAIL: file $lib is nowhere found"
|
|
fi
|
|
done
|
|
|
|
echo "Creating packages..."
|
|
|
|
cd $HACKED_BASE/_build/linux
|
|
tar -cvzf $HACKED_BASE/_build/$FOLDER_NAME-$VERSION.linux64.tgz ./$FOLDER_NAME
|
|
|
|
cd $HACKED_BASE/_build/win
|
|
zip -r $HACKED_BASE/_build/$FOLDER_NAME-$VERSION.win64.zip .
|
|
|
|
popd >/dev/null
|