mirror of https://gitlab.com/nakst/essence
78 lines
2.2 KiB
Bash
Executable File
78 lines
2.2 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Set the current directory to the source root.
|
|
cd "$(dirname "$0")"
|
|
|
|
# Create the bin directories.
|
|
mkdir -p bin bin/dependency_files bin/Logs bin/generated_code bin/cache
|
|
|
|
# Check that we are running on a sensible platform.
|
|
uname -a | grep Cygwin > /dev/null
|
|
if [ $? -ne 1 ]; then
|
|
echo Cygwin is not supported. Please install a modern GNU/Linux distro.
|
|
exit
|
|
fi
|
|
|
|
# Setup for Darwin.
|
|
HOST_FLAGS=""
|
|
uname -a | grep Darwin > /dev/null
|
|
if [ $? -ne 1 ]; then
|
|
export CC=gcc-11
|
|
export CXX=g++-11
|
|
export CPPFLAGS=-I/opt/homebrew/include
|
|
export LDFLAGS=-L/opt/homebrew/lib
|
|
alias md5sum="md5"
|
|
alias gcc="gcc-11"
|
|
alias g++="g++-11"
|
|
alias sed="gsed"
|
|
HOST_FLAGS="-DHOST_DARWIN"
|
|
echo Detected host Darwin.
|
|
fi
|
|
|
|
# Check that the source code is valid.
|
|
md5sum util/test.txt | grep 9906c52f54b2769da1c31e77d3213d0a > /dev/null
|
|
if [ $? -ne 0 ]; then
|
|
echo "--------------------------------------------------------------------"
|
|
echo " The source has been corrupted!! "
|
|
echo " Please check that you have disabled any automatic line-ending or "
|
|
echo " encoding conversions in Git and archive extraction tools you use. "
|
|
echo "--------------------------------------------------------------------"
|
|
exit
|
|
fi
|
|
|
|
# Check the system compiler is reasonably recent.
|
|
if [ ! -f "bin/good_compiler.txt" ]; then
|
|
echo "int main() { return __GNUC__ < 9; }" > bin/check_gcc.c
|
|
g++ -o bin/check_gcc bin/check_gcc.c
|
|
if [ $? -ne 0 ]; then
|
|
echo "GCC/G++ could not be found. Please install the latest version of GCC/G++."
|
|
exit
|
|
fi
|
|
bin/check_gcc
|
|
if [ $? -ne 0 ]; then
|
|
echo "Your system compiler is out of date. Please update to the latest version of GCC/G++."
|
|
exit
|
|
fi
|
|
rm bin/check_gcc.c bin/check_gcc
|
|
echo yes > "bin/good_compiler.txt"
|
|
fi
|
|
|
|
# Check nasm is available.
|
|
nasm --version > /dev/null
|
|
if [ $? -ne 0 ]; then
|
|
echo "Error: Missing nasm."
|
|
exit
|
|
fi
|
|
|
|
# Check make is available.
|
|
make --version > /dev/null
|
|
if [ $? -ne 0 ]; then
|
|
echo "Error: Missing make."
|
|
exit
|
|
fi
|
|
|
|
# Compile and run Build.
|
|
gcc -o bin/build -g util/build.c -pthread -DPARALLEL_BUILD -D${ES_TARGET-TARGET_X86_64} $HOST_FLAGS \
|
|
-Wall -Wextra -Wno-format-security -Wno-format-overflow -Wno-missing-field-initializers -Wno-unused-function -Wno-format-truncation \
|
|
&& bin/build "$@"
|