pckr/compile

120 lines
2.1 KiB
Bash
Executable File

#!/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 -Iintern/c-cpp-aliases -Iintern/cpath/include "
PCKR_SRC="\
intern/cpath/src/cpath.c \
src/argparse.c \
src/io.c \
src/darr.c \
src/pak.c \
src/pckr.c \
src/main.c"
PAKRD_SRC="\
intern/cpath/src/cpath.c \
src/io.c \
src/darr.c \
src/pak.c"
PAKRD_FLAGS="-c -fPIC"
PCKR_TEST_SRC="\
intern/cpath/src/cpath.c \
src/io.c \
src/pckr_test.c"
PCKR_TEST_OUT="pckr_test"
PAKRD_TEST_SRC="\
intern/cpath/src/cpath.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