From bd2953ab7418d45e7dab31a57f012a55b0349a91 Mon Sep 17 00:00:00 2001 From: augustin64 Date: Fri, 22 Apr 2022 15:22:51 +0200 Subject: [PATCH] Update make.sh --- .github/workflows/compilation.yml | 17 ++++++ make.sh | 89 +++++++++++++++++++------------ 2 files changed, 72 insertions(+), 34 deletions(-) create mode 100644 .github/workflows/compilation.yml diff --git a/.github/workflows/compilation.yml b/.github/workflows/compilation.yml new file mode 100644 index 0000000..1da129a --- /dev/null +++ b/.github/workflows/compilation.yml @@ -0,0 +1,17 @@ +name: Compile all + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Compile all + run: ./make.sh build all diff --git a/make.sh b/make.sh index a56f750..5bdd2a3 100755 --- a/make.sh +++ b/make.sh @@ -3,37 +3,59 @@ FLAGS="-std=c99 -lm" OUT="out" -if [[ $1 == "preview" ]]; then - [[ $2 ]] || set -- "$1" "build" - if [[ $2 == "build" ]]; then - mkdir -p "$OUT" +if [[ $1 == "build" ]]; then + mkdir -p "$OUT" + [[ $2 ]] || set "$1" "main" + if [[ $2 == "main" ]]; then + echo "Compilation de src/mnist/main.c" + gcc src/mnist/main.c -o "$OUT/main" $FLAGS + echo "Fait." + exit 0 + elif [[ $2 == "preview" ]]; then echo "Compilation de src/mnist/preview.c" gcc src/mnist/preview.c -o "$OUT/preview_mnist" $FLAGS echo "Fait." exit 0 - elif [[ $2 == "train" ]]; then - [[ -f "$OUT/preview_mnist" ]] || $0 preview build - "$OUT/preview_mnist" data/mnist/train-images-idx3-ubyte data/mnist/train-labels-idx1-ubyte - exit 0 - elif [[ $2 == "t10k" ]]; then - [[ -f "$OUT/preview_mnist" ]] || $0 preview build - "$OUT/preview_mnist" data/mnist/t10k-images-idx3-ubyte data/mnist/t10k-labels-idx1-ubyte - exit 0 - fi -fi - -if [[ $1 == "test" ]]; then - [[ $2 ]] || set -- "$1" "build" - if [[ $2 == "build" ]]; then - mkdir -p "$OUT" + elif [[ $2 == "test" ]]; then for i in $(ls test); do echo "Compilation de test/$i" gcc "test/$i" -o "$OUT/test_$(echo $i | awk -F. '{print $1}')" $FLAGS echo "Fait." done exit 0 + elif [[ $2 == "utils" ]]; then + gcc "src/mnist/utils.c" -o "$OUT/utils" $FLAGS + exit 0 + else + $0 build main + $0 build preview + $0 build test + $0 build utils + exit 0 + fi +fi + +if [[ $1 == "preview" ]]; then + if [[ ! $2 ]]; then + $0 build preview + exit 0 + elif [[ $2 == "train" ]]; then + [[ -f "$OUT/preview_mnist" ]] || $0 build preview + "$OUT/preview_mnist" data/mnist/train-images-idx3-ubyte data/mnist/train-labels-idx1-ubyte + exit 0 + elif [[ $2 == "t10k" ]]; then + [[ -f "$OUT/preview_mnist" ]] || $0 build preview + "$OUT/preview_mnist" data/mnist/t10k-images-idx3-ubyte data/mnist/t10k-labels-idx1-ubyte + exit 0 + fi +fi + +if [[ $1 == "test" ]]; then + if [[ ! $2 ]]; then + $0 build test + exit 0 elif [[ $2 == "run" ]]; then - $0 test build + $0 build test mkdir -p .test-cache for i in $(ls "$OUT/test_"*); do echo "--- $i ---" @@ -43,16 +65,8 @@ if [[ $1 == "test" ]]; then fi fi -if [[ $1 == "build" ]]; then - mkdir -p "$OUT" - echo "Compilation de src/mnist/main.c" - gcc src/mnist/main.c -o "$OUT/main" $FLAGS - echo "Fait." - exit 0 -fi - if [[ $1 == "train" ]]; then - [[ -f "$OUT/main" ]] || $0 build + [[ -f "$OUT/main" ]] || $0 build main [[ $2 ]] || set -- "$1" "train" [[ $3 == "-r" || $3 == "--recover" ]] && RECOVER="-r .cache/reseau.bin" mkdir -p .cache @@ -67,7 +81,7 @@ fi if [[ $1 == "recognize" ]]; then if [[ $2 ]]; then [[ $3 ]] || set -- "$1" "$2" "text" - [[ -f "$OUT/main" ]] || $0 build + [[ -f "$OUT/main" ]] || $0 build main [[ -f ".cache/reseau.bin" ]] || $0 train train "$OUT/main" recognize \ --modele ".cache/reseau.bin" \ @@ -80,18 +94,25 @@ if [[ $1 == "recognize" ]]; then fi fi +if [[ $1 == "utils" ]]; then + [[ -f "$OUT/utils" ]] || $0 build utils + "$OUT/utils" ${*:2} + exit 0 +fi + if [[ $1 == "webserver" ]]; then - [[ -f "$OUT/main" ]] || $0 build + [[ -f "$OUT/main" ]] || $0 build main [[ -f ".cache/reseau.bin" ]] || $0 train train FLASK_APP="src/webserver/app.py" flask run exit 0 fi echo "Usage:" -echo -e "\t$0 preview ( build | train | t10k )" -echo -e "\t$0 test ( build | run )" -echo -e "\t$0 build" +echo -e "\t$0 preview ( train | t10k )" +echo -e "\t$0 test ( run )" +echo -e "\t$0 build ( main | preview | train | utils | all )" echo -e "\t$0 train ( train | t10k ) ( -r | --recover )" echo -e "\t$0 recognize [FILENAME] ( text | json )" +echo -e "\t$0 utils ( help )" echo -e "\t$0 webserver\n" echo -e "Les fichiers de test sont recompilés à chaque exécution,\nles autres programmes sont compilés automatiquement si manquants"