From 3b899a2a30ff7df2b7bf17e626219bfd807d2229 Mon Sep 17 00:00:00 2001 From: SileNce5k Date: Sun, 3 Dec 2023 02:03:35 +0100 Subject: [PATCH] Add build.sh A script that builds each C and C++ file into their own executables --- build.sh | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 build.sh diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..690581c --- /dev/null +++ b/build.sh @@ -0,0 +1,68 @@ +#!/usr/bin/env bash + + +CXX=${CXX:-g++} +CC=${CC:-gcc} +CFLAGS=${CFLAGS:-} +CXXFLAGS=${CXXFLAGS:-} + +compile_c_files() { + local strict=$1 + for file in *.c; do + if [[ -f "$file" ]]; then + filename=$(basename "$file") + extension="${filename##*.}" + filename="${filename%.*}" + executable="c_$filename" + if [[ "$file" -nt "$executable" ]]; then + if $CC $CFLAGS $strict -o "$executable" "$file"; then + if [[ "$OSTYPE" == "msys" ]]; then + executable="$executable.exe" + fi + echo "Compiled $file to $executable" + else + echo -e "\e[31mCompilation failed for $file\e[0m" + fi + else + echo "$file is up to date" + fi + fi + done +} + +compile_cpp_files() { + local strict=$1 + for file in *.cpp; do + if [[ -f "$file" ]]; then + filename=$(basename "$file") + extension="${filename##*.}" + filename="${filename%.*}" + executable="cpp_$filename" + if [[ "$file" -nt "$executable" ]]; then + if $CXX $CXXFLAGS $strict -o "$executable" "$file"; then + if [[ "$OSTYPE" == "msys" ]]; then + executable="$executable.exe" + fi + echo "Compiled $file to $executable" + else + echo -e "\e[31mCompilation failed for $file\e[0m" + fi + else + echo "$file is up to date" + fi + fi + done +} + + +if [[ "$1" == "--strict" ]]; then + strict="-pedantic -Werror -Wall -Wextra" +else + strict="" +fi + + +compile_c_files "$strict" + + +compile_cpp_files "$strict"