summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitya Selivanov <automainint@guattari.tech>2023-10-08 17:57:50 +0200
committerMitya Selivanov <automainint@guattari.tech>2023-10-08 17:57:50 +0200
commit95ca6d4933c193be02c97bdef4614929e2491f39 (patch)
tree547e01adc1ba3b5a912b332c91ef7d2048910155
parent9af78fe5ee82e8a57911e6350b7d2e6a3a966969 (diff)
downloadsaw-95ca6d4933c193be02c97bdef4614929e2491f39.zip
Update build script
-rw-r--r--build_and_test.sh147
1 files changed, 83 insertions, 64 deletions
diff --git a/build_and_test.sh b/build_and_test.sh
index 3ec7361..0500c5f 100644
--- a/build_and_test.sh
+++ b/build_and_test.sh
@@ -1,7 +1,4 @@
-if [ ! -d "build" ]; then
- mkdir build
-fi
-
+FOLDER=build_gcc
OS=Linux
COMPILE=gcc
OBJ_POSTFIX=.o
@@ -12,19 +9,31 @@ FLAG_EXE="-o "
LINK_FLAGS="-lm -lX11 -lXi -lXcursor -lGL"
if [ "$2" = "gcc" ]; then
+ FOLDER=build_gcc
COMPILE=gcc
elif [ "$2" = "clang" ]; then
+ FOLDER=build_clang
COMPILE=clang
elif [ "$2" = "msvc" ]; then
+ FOLDER=build_msvc
COMPILE=cl.exe
OBJ_POSTFIX=.obj
FLAG_OBJ="-c -Fo"
FLAG_EXE="-Fe"
+elif [ "$2" = "emcc" ]; then
+ FOLDER=build_emcc
+ COMPILE=emcc
+ EXE_POSTFIX=.js
+ LINK_FLAGS="-sFULL_ES3=1"
elif [ "$2" != "" ]; then
echo "Unknown C compiler"
exit 1
fi
+if [ "$3" != "" ]; then
+ FOLDER="$3"
+fi
+
if [ "$2" != "" ]; then
if command -v $COMPILE >/dev/null 2>&1; then
echo "C compiler found"
@@ -34,68 +43,70 @@ if [ "$2" != "" ]; then
fi
fi
-case $(uname | tr '[:upper:]' '[:lower:]') in
- *darwin*)
- OS=macOS
- if [ "$2" = "" ]; then
- if command -v clang >/dev/null 2>&1; then
- echo "C compiler found - Clang"
- COMPILE=clang
- elif command -v gcc >/dev/null 2>&1; then
- echo "C compiler found - GCC"
- else
- echo "C compiler not found"
- exit 1
+if [ "$COMPILE" != "emcc" ]; then
+ case $(uname | tr '[:upper:]' '[:lower:]') in
+ *darwin*)
+ OS=macOS
+ if [ "$2" = "" ]; then
+ if command -v clang >/dev/null 2>&1; then
+ echo "C compiler found - Clang"
+ COMPILE=clang
+ elif command -v gcc >/dev/null 2>&1; then
+ echo "C compiler found - GCC"
+ else
+ echo "C compiler not found"
+ exit 1
+ fi
fi
- fi
- ;;
- *msys*|*cygwin*|*mingw*|*nt*|*win*)
- OS=Windows
- EXE_POSTFIX=.exe
- if [ "$2" = "" ]; then
- if command -v cl.exe >/dev/null 2>&1; then
- echo "C compiler found - MSVC"
- COMPILE=cl.exe
- OBJ_POSTFIX=.obj
- FLAG_OBJ="-c -Fo"
- FLAG_EXE="-Fe"
- elif command -v gcc >/dev/null 2>&1; then
- echo "C compiler found - GCC"
- elif command -v clang >/dev/null 2>&1; then
- echo "C compiler found - Clang"
- COMPILE=clang
- else
- echo "C compiler not found"
- exit 1
+ ;;
+ *msys*|*cygwin*|*mingw*|*nt*|*win*)
+ OS=Windows
+ EXE_POSTFIX=.exe
+ if [ "$2" = "" ]; then
+ if command -v cl.exe >/dev/null 2>&1; then
+ echo "C compiler found - MSVC"
+ COMPILE=cl.exe
+ OBJ_POSTFIX=.obj
+ FLAG_OBJ="-c -Fo"
+ FLAG_EXE="-Fe"
+ elif command -v gcc >/dev/null 2>&1; then
+ echo "C compiler found - GCC"
+ elif command -v clang >/dev/null 2>&1; then
+ echo "C compiler found - Clang"
+ COMPILE=clang
+ else
+ echo "C compiler not found"
+ exit 1
+ fi
fi
- fi
- if [ "$COMPILE" = "cl.exe" ]; then
- LINK_FLAGS="Shlwapi.lib Advapi32.lib"
- else
- LINK_FLAGS="-lShlwapi -lAdvapi32"
- fi
- ;;
- *)
- if [ "$2" = "" ]; then
- if command -v gcc >/dev/null 2>&1; then
- echo "C compiler found - GCC"
- elif command -v clang >/dev/null 2>&1; then
- echo "C compiler found - Clang"
- COMPILE=clang
+ if [ "$COMPILE" = "cl.exe" ]; then
+ LINK_FLAGS="Shlwapi.lib Advapi32.lib"
else
- echo "C compiler not found"
- exit 1
+ LINK_FLAGS="-lShlwapi -lAdvapi32"
fi
- fi
- ;;
-esac
+ ;;
+ *)
+ if [ "$2" = "" ]; then
+ if command -v gcc >/dev/null 2>&1; then
+ echo "C compiler found - GCC"
+ elif command -v clang >/dev/null 2>&1; then
+ echo "C compiler found - Clang"
+ COMPILE=clang
+ else
+ echo "C compiler not found"
+ exit 1
+ fi
+ fi
+ ;;
+ esac
+fi
-if [ "$COMPILE" = "gcc" ] || [ "$COMPILE" = "clang" ]; then
+if [ "$COMPILE" = "gcc" ] || [ "$COMPILE" = "clang" ] || [ "$COMPILE" = "emcc" ]; then
if [ "$1" = "release" ]; then
FLAGS="-O3 -DNDEBUG"
elif [ "$COMPILE" = "gcc" ] && [ "$OS" != "Windows" ]; then
FLAGS="-O0 -fsanitize=undefined,address,leak"
- elif [ "$OS" != "Windows" ]; then
+ elif [ "$OS" != "Windows" ] && [ "$COMPILE" != "emcc" ]; then
FLAGS="-O0 -fsanitize=undefined,address"
else
FLAGS="-O0"
@@ -108,30 +119,38 @@ else
fi
fi
+if [ ! -d "$FOLDER" ]; then
+ mkdir "$FOLDER"
+fi
+
echo ""
echo "Build saw"
-if [ ! -f "build/saw_impl${OBJ_POSTFIX}" ] || \
- [ "source/saw/_impl.c" -nt "build/saw_impl${OBJ_POSTFIX}" ]; then
+if [ ! -f "$FOLDER/saw_impl${OBJ_POSTFIX}" ] || \
+ [ "source/saw/_impl.c" -nt "$FOLDER/saw_impl${OBJ_POSTFIX}" ]; then
$COMPILE ${FLAGS} \
- ${FLAG_OBJ}"build/saw_impl${OBJ_POSTFIX}" \
+ ${FLAG_OBJ}"$FOLDER/saw_impl${OBJ_POSTFIX}" \
"source/saw/_impl.c"
if [ $? -ne 0 ]; then
exit 1
fi
fi
$COMPILE ${FLAGS} \
- ${FLAG_EXE}"build/saw${EXE_POSTFIX}" \
- "build/saw_impl${OBJ_POSTFIX}" \
+ ${FLAG_EXE}"$FOLDER/saw${EXE_POSTFIX}" \
+ "$FOLDER/saw_impl${OBJ_POSTFIX}" \
"source/saw/_exe.c" \
${LINK_FLAGS}
if [ $? -ne 0 ]; then
exit 1
fi
+if [ "$COMPILE" = "emcc" ]; then
+ exit 0
+fi
+
echo "Build saw_test_suite"
$COMPILE ${FLAGS} \
- ${FLAG_EXE}"build/saw_test_suite${EXE_POSTFIX}" \
+ ${FLAG_EXE}"$FOLDER/saw_test_suite${EXE_POSTFIX}" \
"source/tests/_exe.c" \
${LINK_FLAGS}
if [ $? -ne 0 ]; then
@@ -143,7 +162,7 @@ echo ""
STATUS=0
-./build/saw_test_suite
+"$FOLDER/saw_test_suite"
if [ $? -ne 0 ]; then
STATUS=1
fi