switch to modular configure-based buildsystem
This commit is contained in:
parent
b5d61a25cb
commit
751fca09e1
4 changed files with 119 additions and 8 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -6,4 +6,5 @@ luac
|
|||
*.o
|
||||
*.so
|
||||
|
||||
config.mk
|
||||
include/
|
||||
|
|
13
Makefile
13
Makefile
|
@ -1,14 +1,11 @@
|
|||
include config.mk
|
||||
|
||||
PREFIX = /usr/local
|
||||
MANPREFIX = ${PREFIX}/man
|
||||
|
||||
CC = cc
|
||||
CFLAGS = -std=c99 -pedantic -fpic -O2 -Iexternal/lua -Wall -Wextra
|
||||
CPPFLAGS = -D_DEFAULT_SOURCE
|
||||
LDFLAGS = -lm
|
||||
|
||||
# Enable readline
|
||||
#CPPFLAGS += -DLUA_USE_READLINE
|
||||
#LDFLAGS += -lreadline
|
||||
CC = ${_CC}
|
||||
CFLAGS = -std=c99 ${_CFLAGS} -pedantic -Iexternal/lua -Wall -Wextra -D_DEFAULT_SOURCE
|
||||
LDFLAGS = -lm ${_LDFLAGS}
|
||||
|
||||
OBJS = callisto.o lcl.o lenviron.o lextra.o lfs.o ljson.o lprocess.o util.o
|
||||
LIBS = libcallisto.a liblua.a
|
||||
|
|
|
@ -59,6 +59,7 @@ Untar it then enter the directory with Callisto's source code.
|
|||
|
||||
After that, run
|
||||
|
||||
./configure
|
||||
make
|
||||
|
||||
to compile Callisto and all its dependencies.
|
||||
|
|
112
configure
vendored
Executable file
112
configure
vendored
Executable file
|
@ -0,0 +1,112 @@
|
|||
#!/usr/bin/env sh
|
||||
# simple and flexible configure script for people who don't like to waste time
|
||||
# licensed to the public domain
|
||||
|
||||
set -e
|
||||
|
||||
mkf=config.mk
|
||||
|
||||
# utility functions
|
||||
|
||||
present () {
|
||||
command -v "$1" 1>/dev/null 2>/dev/null
|
||||
}
|
||||
using () {
|
||||
printf "using $1\n"
|
||||
}
|
||||
error () {
|
||||
>&2 printf "$(basename $0): $1\n"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# generators
|
||||
|
||||
## C compiler
|
||||
gen_CC () {
|
||||
if ! [ -z "$cc" ]; then
|
||||
using "$cc"
|
||||
return 0
|
||||
fi
|
||||
if present clang; then
|
||||
cc=clang
|
||||
elif present cc; then
|
||||
cc=cc
|
||||
elif present gcc; then
|
||||
cc=gcc
|
||||
else
|
||||
error "C compiler not found, please acquire a copy of LLVM Clang or the GNU C compiler"
|
||||
fi
|
||||
|
||||
using "$cc"
|
||||
}
|
||||
|
||||
## flags used in the compilation step
|
||||
gen_CFLAGS () {
|
||||
if [ -z "$debug" ]; then
|
||||
cflags="-O2"
|
||||
else
|
||||
cflags="-O0 -g"
|
||||
fi
|
||||
|
||||
for flag in $cflags; do
|
||||
using "$flag"
|
||||
done
|
||||
}
|
||||
|
||||
## flags used in the linking step
|
||||
gen_LDFLAGS () {
|
||||
if pkg-config readline; then
|
||||
ldflags="$(pkg-config --libs readline)"
|
||||
fi
|
||||
if present ld.lld; then
|
||||
ldflags="$ldflags -fuse-ld=lld"
|
||||
elif present ld.gold; then
|
||||
ldflags="$ldflags -fuse-ld=gold"
|
||||
fi
|
||||
[ -z "$debug" ] && ldflags="$ldflags -Wl,--gc-sections"
|
||||
|
||||
for flag in $ldflags; do
|
||||
using "$flag"
|
||||
done
|
||||
}
|
||||
|
||||
# command line interface
|
||||
|
||||
while getopts c:dhr ch; do
|
||||
case "$ch" in
|
||||
c) cc="$OPTARG" ;;
|
||||
d) debug=1 ;;
|
||||
r) unset debug ;;
|
||||
h)
|
||||
cat <<EOF
|
||||
configure: create an optimised makefile for the current environment
|
||||
|
||||
options:
|
||||
-c: force use of a particular compiler
|
||||
-d: build in debug mode, with debug symbols enabled
|
||||
-r: build in release mode with optimisation flags enabled (default)
|
||||
-h: show this help message
|
||||
EOF
|
||||
exit 0
|
||||
;;
|
||||
?) exit 1 ;;
|
||||
:) exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# creating the makefile
|
||||
|
||||
gen_CC
|
||||
gen_CFLAGS
|
||||
gen_LDFLAGS
|
||||
|
||||
printf '# generated by configure
|
||||
|
||||
_CC = %s
|
||||
_CFLAGS = %s
|
||||
_LDFLAGS =%s
|
||||
' \
|
||||
"$cc" \
|
||||
"$cflags" \
|
||||
"$ldflags"\
|
||||
>"$mkf"
|
Loading…
Add table
Add a link
Reference in a new issue