#!/bin/bash BUILD_TYPE="debug" while [[ $# > 0 ]];do case $1 in --release) BUILD_TYPE="release" shift ;; *|-*|--*) echo "Unknown option $1" exit 1 ;; esac done CC=clang CFLAGS="-Wall -Werror -pedantic" LIBFLAGS="-fPIC -shared" INCLUDE="$(find src -type d | xargs -I{} echo -n "-I{} ")" SRC="$(find src -type f -name "*.c" | xargs -I{} echo -n "{} ")" TEST_INCLUDE="$(find tests -type d | xargs -I{} echo -n "-I{} ")" TEST_SRC="$(find tests -type f -name "*.c" | xargs -I{} echo -n "{} ")" BUILD_DIR="libwapp-build/posix-$BUILD_TYPE" if [[ -d $BUILD_DIR ]]; then rm -rf $BUILD_DIR fi mkdir -p $BUILD_DIR if [[ $BUILD_TYPE == "release" ]]; then CFLAGS+=" -O3" else CFLAGS+=" -g -fsanitize=address -fsanitize=undefined" fi OUT="$BUILD_DIR/libwapp.so" TEST_OUT="$BUILD_DIR/wapptest" # Compile tests if [[ $(echo $TEST_SRC | xargs) != "" ]]; then (set -x ; $CC $CFLAGS $INCLUDE $TEST_INCLUDE $SRC $TEST_SRC -o $TEST_OUT) fi # Run tests and exit on failure if [[ -f $TEST_OUT ]]; then $TEST_OUT STATUS="$?" rm $TEST_OUT if [[ $STATUS != "0" ]]; then exit 1 fi fi # Compile library (set -x ; $CC $CFLAGS $LIBFLAGS $INCLUDE $SRC -o $OUT)