#!/bin/bash #ESCAPE SEQUENCES CLEAR="\033[0m" BOLD="\033[1" FG_BLACK="\033[30" FG_RED="\033[31" FG_GREEN="\033[32" FG_YELLOW="\033[33" FG_BLUE="\033[34" FG_MAGENTA="\033[35" FG_CYAN="\033[36" FG_WHITE="\033[37" FG_BR_BLACK="\033[90" FG_BR_RED="\033[91" FG_BR_GREEN="\033[92" FG_BR_YELLOW="\033[93" FG_BR_BLUE="\033[94" FG_BR_MAGENTA="\033[95" FG_BR_CYAN="\033[96" FG_BR_WHITE="\033[97" CC=clang AR=ar CFLAGS="-Wall -Werror -pedantic -Iinclude " PCKR_SRC="\ src/path_utils.c \ src/argparse.c \ src/io.c \ src/darr.c \ src/pak.c \ src/pckr.c \ src/main.c" PAKRD_SRC="\ src/path_utils.c \ src/io.c \ src/darr.c \ src/pak.c" PAKRD_FLAGS="-c -fPIC" PCKR_TEST_SRC="\ src/path_utils.c \ src/io.c \ src/pckr_test.c" PCKR_TEST_OUT="pckr_test" PAKRD_TEST_SRC="\ src/path_utils.c \ src/io.c \ src/darr.c \ src/pak.c \ src/pakrd_test.c" PAKRD_TEST_OUT="pakrd_test" BUILD_TYPE="debug" while [[ $# -gt 0 ]]; do case $1 in -r|--release) BUILD_TYPE="release" shift # past argument ;; -*|--*|*) echo "Usage: build [-r | --release]" exit 1 ;; esac done if [[ $BUILD_TYPE == "debug" ]]; then CFLAGS+="-g " PCKR_OUT="pckr" PAKRD_OUT="pakrd.a" else mkdir dist cp ./include/pak.h dist CFLAGS+="-O3 " PCKR_OUT="dist/pckr" PAKRD_OUT="dist/pakrd.a" fi # Build pckr executable (set -x ; $CC $CFLAGS $PCKR_SRC -o $PCKR_OUT) # Build pakrd static library (set -x ; $CC $CFLAGS $PAKRD_FLAGS $PAKRD_SRC ; $AR r $PAKRD_OUT *.o) rm *.o # Build pckr_test executable (set -x ; $CC $CFLAGS $PCKR_TEST_SRC -o $PCKR_TEST_OUT) # Build pakrd_test executable (set -x ; $CC $CFLAGS $PAKRD_TEST_SRC -o $PAKRD_TEST_OUT) # Create test pak ./pckr ./test_assets ./assets # Run pckr_test (./$PCKR_TEST_OUT && echo -e "\npckr_test [${FG_BR_GREEN}m${BOLD}m SUCCESS $CLEAR]") || echo -e "\npckr_test [${FG_BR_RED}m${BOLD}m FAILURE $CLEAR]" # Run pakrd_test (./$PAKRD_TEST_OUT && echo -e "pakrd_test [${FG_BR_GREEN}m${BOLD}m SUCCESS $CLEAR]") || echo -e "pakrd_test [${FG_BR_RED}m${BOLD}m FAILURE $CLEAR]" # Clean test assets rm ./assets.pak rm pckr_test rm pakrd_test