aboutsummaryrefslogtreecommitdiffstats
path: root/configure
diff options
context:
space:
mode:
authorTomasz Kramkowski <tk@the-tk.com>2021-02-11 12:15:12 +0000
committerTomasz Kramkowski <tk@the-tk.com>2021-02-11 14:25:14 +0000
commitbb97e8aaa15217afe1f3fcdc93662ab03b8ae9d9 (patch)
tree64fa5b5ba419e72bc6acaddadbc51c73646295fa /configure
downloadluiml-bb97e8aaa15217afe1f3fcdc93662ab03b8ae9d9.tar.gz
luiml-bb97e8aaa15217afe1f3fcdc93662ab03b8ae9d9.tar.xz
luiml-bb97e8aaa15217afe1f3fcdc93662ab03b8ae9d9.zip
init commit
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure94
1 files changed, 94 insertions, 0 deletions
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