From bb97e8aaa15217afe1f3fcdc93662ab03b8ae9d9 Mon Sep 17 00:00:00 2001 From: Tomasz Kramkowski Date: Thu, 11 Feb 2021 12:15:12 +0000 Subject: init commit --- configure | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100755 configure (limited to 'configure') diff --git a/configure b/configure new file mode 100755 index 0000000..2fa53e6 --- /dev/null +++ b/configure @@ -0,0 +1,94 @@ +#!/bin/bash + +libs=(luajit sdl2 pangoft2) +CFLAGS+=(-std=c11 -fPIC) +LDFLAGS+=(-shared) + +usage () { + echo "Usage: $0 [-h|options...]" +} +help () { + echo "Options:" + echo " -B ldlib Append ldlib to LDLIBS" + echo " -C cflag Append cflag to CFLAGS" + echo " -L ldflag Append ldflag to LDFLAGS" + echo " -P cppflag Append cppflag to CPPFLAGS" + echo " -c when Enable compiler colours (always|auto|off) [default: auto]" + echo " -d Enable debugging flags" + echo " -e Enable -Werror" + echo " -h Show this help" + echo " -o Enable optimisation flags" + echo " -v Print results of configuration" + echo " -w Enable warning flags" + echo "Environment:" + echo " CC C compiler" + echo " PKG_CONFIG pkg-config" +} + +exists() { + command -v "$1" >/dev/null 2>&1 +} + +check() { + what=$1 + shift + for p do + if exists "$p"; then + echo "$p" + return + fi + done + echo "$what not set or found" >&2 + return 1 +} + +CC=$(check '$CC, cc, gcc or clang' "$CC" cc gcc clang) || exit +pc=$(check '$PKG_CONFIG, pkg-config or pkg-conf' "$PKG_CONFIG" pkg-config pkg-conf) || exit + +for l in "${libs[@]}"; do + "$pc" --print-errors --exists "$l" || exit +done +CFLAGS+=($("$pc" --cflags-only-other "${libs[@]}")) +CPPFLAGS+=($("$pc" --cflags-only-I "${libs[@]}")) +LDFLAGS+=($("$pc" --libs-only-L --libs-only-other "${libs[@]}")) +LDLIBS+=($("$pc" --libs-only-l "${libs[@]}")) + +colour=auto +while getopts B:C:L:P:c:dehovw opt; do + case $opt in + B) LDLIBS+=("$OPTARG");; + C) CFLAGS+=("$OPTARG");; + L) LDFLAGS+=("$OPTARG");; + P) CPPFLAGS+=("$OPTARG");; + c) colour="$OPTARG";; + d) + CFLAGS+=(-Og -g) + LDFLAGS+=(-Og -g) + ;; + e) CFLAGS+=(-Werror);; + h) usage; help; exit;; + o) + CFLAGS+=(-O2 -flto) + LDFLAGS+=(-O2 -flto) + ;; + v) verbose=1;; + w) CFLAGS+=(-Wall -Wextra);; + ?) usage >&2; exit 1;; + esac +done +if [[ $colour == auto ]] && exists tput && (( $(tput colors) >= 8 )); then + colour=always +fi +if [[ $colour == always ]]; then + CFLAGS+=(-fdiagnostics-color) +fi + +{ + echo "# generated using $0 $@" + echo "CC=$CC" + echo "CFLAGS=(${CFLAGS[@]@Q})" + echo "CPPFLAGS=(${CPPFLAGS[@]@Q})" + echo "LDFLAGS=(${LDFLAGS[@]@Q})" + echo "LDLIBS=(${LDLIBS[@]@Q})" +} >.config.rc +[[ $verbose ]] && cat .config.rc -- cgit v1.2.3-54-g00ecf