Skip to content

Commit

Permalink
Merge branch 'gha/Firestorm_6.6.3_VR' into gha/Firestorm_6.6.8_VR
Browse files Browse the repository at this point in the history
  • Loading branch information
humbletim committed Jan 29, 2023
2 parents 60f095e + 3c1eeb6 commit 5dddd45
Show file tree
Hide file tree
Showing 35 changed files with 3,774 additions and 25 deletions.
34 changes: 34 additions & 0 deletions .github/3p/CompileWindows.autobuild-setup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/bin/bash
# github actions helper for compiling specific prebuilts inline
# -- humbletim 2022.03.27

set -eu
. .github/3p/_assert_defined.sh

assert_defined AUTOBUILD_INSTALLABLE_CACHE AUTOBUILD_CONFIG_FILE \
INLINE_FS3P_GITURL INLINE_FS3P_DEPS \
ALTERNATE_FS3P_DEPS

for x in $INLINE_FS3P_DEPS ; do
echo "[[ $x ]]"
echo .github/fsenv.sh .github/3p/inline-build.sh 3p-inline "$INLINE_FS3P_GITURL/$x"
time .github/3p/inline-build.sh 3p-inline "$INLINE_FS3P_GITURL/$x"
echo
done

for x in $ALTERNATE_FS3P_DEPS ; do
echo "[[ $x ]]"
echo .github/fsenv.sh .github/3p/use-alternate.sh $x
time .github/3p/use-alternate.sh $x
echo
done

# changes to autobuild.xml from autobuild tooling "randomly" reorder entries
# create a sorted hash+url list to use for change detection and cache keys
(
echo "import json; print(json.dumps((" ; autobuild installables print ; echo "), indent=4))"
) | ${PYTHON_EXECUTABLE:-python3} | jq -r ".[]|(.platforms.${AUTOBUILD_PLATFORM}//.platforms.common)|select(.)|.archive.hash+\"\t\"+.archive.url" \
| sort -u | tee autobuild.xml.sorted.txt >&2

echo -n "// " >&2
md5sum autobuild.xml.sorted.txt >&2
9 changes: 9 additions & 0 deletions .github/3p/_assert_defined.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/bash

function assert_defined() {
local x=
for x in $* ; do
test -n "${!x:-}" || { echo "environment variable '$x' missing" ; exit 1 ; }
if [[ -n "${DEBUG:-}" ]] ; then echo $x=${!x} >&2 ; fi
done
}
39 changes: 39 additions & 0 deletions .github/3p/_autobuild-json2xml.jq
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# jq helper for converting human-friendly autobuild.json into gory autobuild.xml


def _pad(level):
" "
| .[0:(if (level|type == "number" and level > 0) then level*2 else 0 end)];

def _wrap(level; name; stuff):
"<"+name+">"+(
if (level < 0 or (stuff|length == 0)) then stuff else "\n"+(stuff)+"\n"+_pad(level) end
)+"</"+name+">";

def _llsd(level; value):
value as $value |
(
if $value|type == "object" then
_wrap(level-1; "map"; (
[
( $value | to_entries[] )
| (""+_pad(level)+"<key>"+.key+"</key>" + _llsd(level+1; .value) )
] | join("\n")
))
elif $value|type == "array" then
_wrap(level-1; "array"; [$value[]|_pad(level)+_llsd(level; .)]|join("\n"))
elif $value|type == "string" then
_wrap(-1; "string"; $value)
else
_wrap(-1; "UNKNOWN"; $value|tostring)
end
);

def llsd:
"<?xml version=\"1.0\" ?>\n"+
"<llsd>\n" +
_pad(1) + _llsd(2; .) + "\n" +
"</llsd>";



19 changes: 19 additions & 0 deletions .github/3p/_autobuild_prop_as_json.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/bash

# example usage:
# autobuild_prop_as_json "glod" ".archive.url"
function autobuild_prop_as_json() {
(
echo 'import json; print(json.dumps(('
autobuild installables print $1
echo '), indent=4))'
) | python | jq -r "(.platforms.$AUTOBUILD_PLATFORM//.platforms.common)|$2"
}

function autobuild_jq() {
(
echo 'import json; print(json.dumps(('
autobuild installables print
echo '), indent=4))'
) | python | jq -r "$@"
}
17 changes: 17 additions & 0 deletions .github/3p/_dsp_sourcefiles.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash
# helper function for extracting C SOURCE files from old school .dsp projects
# -- humbletim 2022.03.27
#
# usage: _dsp_sourcefiles <dspfile> [optional per-source prefix -- eg: -Tp]
# example:
# SRCS=$(_dsp_sourcefiles project.dsp -Tp)
# cl.exe /c $SRCS
function _dsp_sourcefiles() {
local dspfile=$1 Tp=${2:-}
local reldir=${Tp}$(dirname $dspfile)/
test -f $dspfile
echo "_dsp_sources($dspfile,$reldir)" >&2
cat $dspfile | \
grep -Ei '^SOURCE=.*\.(c|cxx|cpp|c+\+|cc)\s*$' | \
sed -e "s@SOURCE=@${reldir}@;" -e 's@\\@/@g; s@/\./@/@g;'
}
40 changes: 40 additions & 0 deletions .github/3p/build-cmds/3p-discord-rpc.build-cmd.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/bin/bash
# minimalist build-cmd.sh replacement for gha autobuilds - humbletim 2022.03.21
set -eu
test -n "$AUTOBUILD" || { echo "only intended for use within AUTOBUILD" ; exit 1 ; }

cd "$(dirname "$0")"

DISCORD_SOURCE_DIR="discord-rpc-3.4.0"

# workaround older(?) autobuild runtime issue from Git+Windows MINGW bash prompt
USERPROFILEAppDataLocalMicrosoftWindowsApps=

mkdir -p build
mkdir -p stage/lib/release
mkdir -p stage/LICENSES
mkdir -p stage/include/discord-rpc

wdflags=

if [[ $AUTOBUILD_PLATFORM == windows* ]] ; then
wdflags=$(echo "
warning C5039: 'TpSetCallbackCleanupGroup': pointer or reference to potentially throwing function passed to 'extern C' function under -EHc.
warning C5045: Compiler will insert Spectre mitigation for memory load if /Qspectre switch specified
" | awk '{ print $2 }' | sed -e 's@C@-wd@; s@:$@@;')
fi

cmake -S $DISCORD_SOURCE_DIR -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DCMAKE_CXX_FLAGS="`echo $wdflags`"
ninja -C build

if [[ $AUTOBUILD_PLATFORM == windows* ]] ; then
cp -av build/src/discord-rpc.{lib,dll} stage/lib/release/
fi

if [[ $AUTOBUILD_PLATFORM == linux* ]] ; then
cp -av build/src/libdiscord-rpc.so stage/lib/release/
fi

cp -av $DISCORD_SOURCE_DIR/LICENSE stage/LICENSES/discord-rpc.txt
cp -av $DISCORD_SOURCE_DIR/include/*.h stage/include/discord-rpc/
cp -av VERSION.txt stage/
55 changes: 55 additions & 0 deletions .github/3p/build-cmds/3p-freetype.build-cmd.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#!/bin/bash
# minimalist build-cmd.sh replacement for gha autobuilds - humbletim 2022.03.21
set -eu
test -n "$AUTOBUILD" || { echo "only intended for use within AUTOBUILD" ; exit 1 ; }

. $_3P_UTILSDIR/_dsp_sourcefiles.sh

cd "$(dirname "$0")"

FREETYPELIB_SOURCE_DIR="freetype-2.3.9"
FREETYPE_VERSION=${FREETYPELIB_SOURCE_DIR#*-}

top="$(pwd)"
stage="$(pwd)/stage"
mkdir -p $stage/lib/release
mkdir -p $stage/include/freetype2/
mkdir -p $stage/LICENSES
mkdir -p $stage/docs/freetype

if [[ $AUTOBUILD_PLATFORM == linux* ]] ; then
function cl() {
$CXX -fPIC "$@"
}
function lib() {
local args="${@/-out:/-shared -o }"
args="${args/freetype.lib/libfreetype.so}"
args="${args/.obj/.o}"
ld ${args}
}
fi
pushd $FREETYPELIB_SOURCE_DIR
SRCS=$(_dsp_sourcefiles builds/win32/visualc/freetype.dsp)

wdflags=
if [[ $AUTOBUILD_PLATFORM == windows* ]] ; then
# tidy up some warnings
wdflags=$(echo "
warning C4312: 'type cast': conversion from 'unsigned long' to 'void *' of greater size
warning C4311: 'type cast': pointer truncation from 'void *' to 'unsigned long'
" | awk '{ print $2 }' | sed -e 's@C@-wd@; s@:$@@;')
fi

set -x
# -I$stage/packages/include/zlib-ng
cl -O2 -Iinclude -DNDEBUG -DFT2_BUILD_LIBRARY -D_MBCS -D_LIB -c $SRCS $wdflags
lib *.obj -out:$stage/lib/release/freetype.lib
set +x

cp -av include/ft2build.h $stage/include/
cp -av include/freetype $stage/include/freetype2/
cp -av docs/LICENSE.TXT $stage/LICENSES/freetype.txt
popd

cp -av README.Linden $stage/docs/freetype/
echo "${FREETYPE_VERSION}.${AUTOBUILD_BUILD_ID}" | tee ${stage}/VERSION.txt
52 changes: 52 additions & 0 deletions .github/3p/build-cmds/3p-glod.build-cmd.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#!/bin/bash
# minimalist build-cmd.sh replacement for gha autobuilds - humbletim 2022.03.21
set -eu
test -n "$AUTOBUILD" || { echo "only intended for use within AUTOBUILD" ; exit 1 ; }

. $_3P_UTILSDIR/_dsp_sourcefiles.sh

cd "$(dirname "$0")"

mkdir -p stage/include/glod
mkdir -p stage/LICENSES
mkdir -p stage/lib/release

GLOD_VERSION=$(grep -E '^GLOD [0-9]' README | head -1 | awk '{ print $2 }')
echo "${GLOD_VERSION}.${AUTOBUILD_BUILD_ID:=0}" > stage/VERSION.txt

if [[ $AUTOBUILD_PLATFORM == linux* ]] ; then
mkdir lib || true
make release -j
cp -av lib/*.a stage/lib/release/
fi

if [[ $AUTOBUILD_PLATFORM == windows* ]] ; then

DSPFILES="
src/api/glodlib.dsp
src/mt/mt.dsp
src/ply/ply.dsp
src/vds/vdslib_glod.dsp
src/xbs/xbs.dsp
"
SRCS=$(
for dsp in $DSPFILES ; do
_dsp_sourcefiles "$dsp" -Tp
done
)
echo SRCS=$SRCS >&2

# tidy up some warnings
wdflags=$(echo "
warning C4838: conversion from '__int64' to 'int' requires a narrowing conversion
warning C4477: 'fprintf' : format string '%x' requires an argument of type 'unsigned int'
warning C4313: 'fprintf': '%x' in format string conflicts with argument 1 of type 'Tri *'
" | awk '{ print $2 }' | sed -e 's@C@-wd@; s@:$@@;')

cl -O2 -DNDEBUG -EHsc -DGLOD -D_MBCS -DGLOD_EXPORTS -Iinclude -Isrc/include -Isrc/mt -Isrc/xbs -Isrc/vds $wdflags $SRCS -LD -Feglod.dll

cp -av glod.{lib,dll} stage/lib/release/
fi

cp -av include/glod.h stage/include/glod/
cp -av LICENSE stage/LICENSES/GLOD.txt
20 changes: 20 additions & 0 deletions .github/3p/build-cmds/3p-gntp-growl.build-cmd.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/bin/bash
# minimalist build-cmd.sh replacement for gha autobuilds - humbletim 2022.03.21
set -eu
test -n "$AUTOBUILD" || { echo "only intended for use within AUTOBUILD" ; exit 1 ; }

cd "$(dirname "$0")"

mkdir -p stage/lib/release stage/lib/debug
mkdir -p stage/include/Growl
mkdir -p stage/LICENSES
echo "1.0" > stage/VERSION.txt

cmake -S gntp-send -G Ninja -B build -DCMAKE_BUILD_TYPE=Release
ninja -C build growl growl++

cp -av build/*.{dll,lib} stage/lib/release/
cp -av build/*.{dll,lib} stage/lib/debug/
cp -av gntp-send/headers/{growl++.hpp,growl.h} stage/include/Growl/
cp -av gntp-send/LICENSE stage/LICENSES/gntp-growl.txt

47 changes: 47 additions & 0 deletions .github/3p/build-cmds/3p-ndPhysicsStub.build-cmd.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#!/bin/bash
# minimalist build-cmd.sh replacement for gha autobuilds - humbletim 2022.03.21
set -eu
test -n "$AUTOBUILD" || { echo "only intended for use within AUTOBUILD" ; exit 1 ; }

cd "$(dirname "$0")"

mkdir -p stage/lib/release stage/include stage/LICENSES

echo "1.${AUTOBUILD_BUILD_ID:=0}" > stage/VERSION.txt

wdflags=
cxxflags=
if [[ $AUTOBUILD_PLATFORM == windows* ]] ; then
wdflags=$(echo "
warning C4334: '<<': result of 32-bit shift implicitly converted to 64 bits
warning C4244: '=': conversion from 'const double' to 'float', possible loss of data
warning C4267: 'argument': conversion from 'size_t' to 'const T', possible loss of data
warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead.
warning C4477: 'sprintf' : format string '%lu' requires an argument of type 'unsigned long'
" | awk '{ print $2 }' | sed -e 's@C@-wd@; s@:$@@;')

# hacd="src/hacdGraph.cpp src/hacdHACD.cpp src/hacdICHull.cpp src/hacdManifoldMesh.cpp src/hacdMeshDecimator.cpp src/hacdMicroAllocator.cpp src/hacdRaycastMesh.cpp"
# nd_hacdConvexDecomposition="LLConvexDecomposition.cpp nd_hacdConvexDecomposition.cpp nd_hacdStructs.cpp nd_hacdUtils.cpp nd_EnterExitTracer.cpp nd_StructTracer.cpp"
# nd_Pathing="llpathinglib.cpp llphysicsextensions.cpp"
cxxflags="-D_WINDOWS -DNOMINMAX -D_SECURE_STL=0 -D_HAS_ITERATOR_DEBUGGING=0 -D_SECURE_SCL=0 -W3 -GR -EHsc -MD -O2 -Ob2 -DNDEBUG"
fi


cmake -Wno-dev -S . -G Ninja -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS_RELEASE="`echo $cxxflags $wdflags`"
ninja -C build

if [[ $AUTOBUILD_PLATFORM == windows* ]] ; then
cp -av build/Source/*/*.lib stage/lib/release/
fi

if [[ $AUTOBUILD_PLATFORM == linux* ]] ; then
cp -av build/Source/*/*.a stage/lib/release/
fi

cp -av ndPhysicsStub.txt stage/LICENSES/
cp -av Source/lib/LLConvexDecomposition.h stage/include/llconvexdecomposition.h
cp -av \
Source/Pathing/llpathinglib.h \
Source/Pathing/llphysicsextensions.h \
Source/lib/ndConvexDecomposition.h \
"stage/include/"
35 changes: 35 additions & 0 deletions .github/3p/build-cmds/3p-openjpeg2.build-cmd.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#!/bin/bash
# minimalist build-cmd.sh replacement for gha autobuilds - humbletim 2022.03.21
set -eu
test -n "$AUTOBUILD" || { echo "only intended for use within AUTOBUILD" ; exit 1 ; }

cd "$(dirname "$0")"

OPENJPEG_VERSION="2.4.0"

mkdir -p build stage/lib/release stage/lib/debug stage/include/openjpeg stage/LICENSES

echo "${OPENJPEG_VERSION}.${AUTOBUILD_BUILD_ID:=0}" > stage/VERSION.txt

wdflags=
if [[ $AUTOBUILD_PLATFORM == windows* ]] ; then
wdflags=$(echo "
warning C4267: '=': conversion from 'size_t' to 'OPJ_UINT32', possible loss of data
" | awk '{ print $2 }' | sed -e 's@C@/wd@; s@:$@@;')
fi

cmake -Wno-dev -S src -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS=" `echo $wdflags`"
ninja -C build openjp2

cp -av build/LICENSE.txt stage/LICENSES/openjpeg.txt
cp -av src/src/lib/openjp2/{openjpeg.h,opj_stdint.h,event.h} stage/include/openjpeg/
cp -av build/src/lib/openjp2/opj_config.h stage/include/openjpeg/
if [[ $AUTOBUILD_PLATFORM == windows* ]] ; then
cp -av build/bin/openjp2{.dll,.lib} stage/lib/release/
cp -av build/bin/openjp2{.dll,.lib} stage/lib/debug/
fi
if [[ $AUTOBUILD_PLATFORM == linux* ]] ; then
cp -avL build/bin/libopenjp2.so stage/lib/release/
cp -avL build/bin/libopenjp2.so stage/lib/debug/
fi

Loading

0 comments on commit 5dddd45

Please sign in to comment.