From 95ca6d4933c193be02c97bdef4614929e2491f39 Mon Sep 17 00:00:00 2001 From: Mitya Selivanov Date: Sun, 8 Oct 2023 17:57:50 +0200 Subject: Update build script --- build_and_test.sh | 147 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 83 insertions(+), 64 deletions(-) (limited to 'build_and_test.sh') 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 -- cgit v1.2.3