1
0
forked from 0ad/0ad

Add a custom script to build premake, like NVTT, FCollada, and Spidermonkey.

Fix an issue on newer GNU/Linux and macOS where the build would fail due
to missing unistd includes.
Fixes: #6847
Accepted by: @vv221
Comments by: @sera
Differential Revision: https://code.wildfiregames.com/D4894
This was SVN commit r28187.
This commit is contained in:
Stan 2024-08-10 11:46:03 +00:00
parent a9ea169301
commit 5da05ae15c
2 changed files with 38 additions and 18 deletions

35
build/premake/build.sh Executable file
View File

@ -0,0 +1,35 @@
#!/bin/sh
set -e
LIB_VERSION="premake-5-alpha-14+wildfiregames.1"
if [ -e .already-built ] && [ "$(cat .already-built)" = "${LIB_VERSION}" ]
then
echo "Premake 5 is already up to date."
exit
fi
JOBS=${JOBS:="-j2"}
MAKE=${MAKE:="make"}
CFLAGS="${CFLAGS:=""} -Wno-error=implicit-function-declaration"
OS="${OS:=$(uname -s)}"
echo "Building Premake 5..."
echo
PREMAKE_BUILD_DIR=premake5/build/gmake2.unix
# BSD and OS X need different Makefiles
case "$OS" in
"GNU/kFreeBSD" )
# use default gmake2.unix (needs -ldl as we have a GNU userland and libc)
;;
*"BSD" )
PREMAKE_BUILD_DIR=premake5/build/gmake2.bsd
;;
"Darwin" )
PREMAKE_BUILD_DIR=premake5/build/gmake2.macosx
;;
esac
${MAKE} -C "${PREMAKE_BUILD_DIR}" "${JOBS}" CFLAGS="$CFLAGS" config=release
echo "${LIB_VERSION}" > .already-built

View File

@ -102,30 +102,15 @@ if [ "`uname -s`" != "Darwin" ]; then
echo echo
fi fi
# Now run premake to create the makefiles # Now build Premake or use system's.
cd ../premake cd ../premake
premake_command="premake5" premake_command="premake5"
if [ "$with_system_premake5" = "false" ]; then if [ "$with_system_premake5" = "false" ]; then
# Build bundled premake # Build bundled premake
cd premake5 MAKE=${MAKE} JOBS=${JOBS} ./build.sh || die "Premake 5 build failed"
PREMAKE_BUILD_DIR=build/gmake2.unix
# BSD and OS X need different Makefiles
case "`uname -s`" in
"GNU/kFreeBSD" )
# use default gmake2.unix (needs -ldl as we have a GNU userland and libc)
;;
*"BSD" )
PREMAKE_BUILD_DIR=build/gmake2.bsd
;;
"Darwin" )
PREMAKE_BUILD_DIR=build/gmake2.macosx
;;
esac
${MAKE} -C $PREMAKE_BUILD_DIR ${JOBS} || die "Premake build failed"
cd ..
premake_command="premake5/bin/release/premake5" premake_command="premake5/bin/release/premake5"
fi fi
@ -133,7 +118,7 @@ echo
# If we're in bash then make HOSTTYPE available to Premake, for primitive arch-detection # If we're in bash then make HOSTTYPE available to Premake, for primitive arch-detection
export HOSTTYPE="$HOSTTYPE" export HOSTTYPE="$HOSTTYPE"
# Now run Premake to create the makefiles
echo "Premake args: ${premake_args}" echo "Premake args: ${premake_args}"
if [ "`uname -s`" != "Darwin" ]; then if [ "`uname -s`" != "Darwin" ]; then
${premake_command} --file="premake5.lua" --outpath="../workspaces/gcc/" ${premake_args} gmake || die "Premake failed" ${premake_command} --file="premake5.lua" --outpath="../workspaces/gcc/" ${premake_args} gmake || die "Premake failed"