refactor configure script
Generate a makefile config instead of a makefile with predefined constants. This makes the build a bit more easier to modify. Also improve the makefile and apply some suggestions from shellcheck. :)
This commit is contained in:
parent
4bb8d391fd
commit
f1b79c2a7c
3 changed files with 60 additions and 66 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -4,4 +4,4 @@
|
||||||
esv
|
esv
|
||||||
result
|
result
|
||||||
|
|
||||||
Makefile
|
config.mk
|
29
Makefile
Normal file
29
Makefile
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
IMPORT = import
|
||||||
|
PREFIX = /usr/local
|
||||||
|
MANPREFIX = ${PREFIX}/man
|
||||||
|
|
||||||
|
DC = ${_DC}
|
||||||
|
CFLAGS = ${_CFLAGS}
|
||||||
|
OBJS = ${_OBJS}
|
||||||
|
|
||||||
|
all: esv
|
||||||
|
|
||||||
|
include config.mk
|
||||||
|
|
||||||
|
esv: ${OBJS}
|
||||||
|
${DC} ${_LDFLAGS} -of=$@ ${OBJS}
|
||||||
|
|
||||||
|
.SUFFIXES: .d .o
|
||||||
|
|
||||||
|
.d.o:
|
||||||
|
${DC} ${CFLAGS} -c $<
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f esv ${OBJS} ${INIOBJS}
|
||||||
|
|
||||||
|
install: esv
|
||||||
|
install -Dm755 esv ${DESTDIR}${PREFIX}/bin/esv
|
||||||
|
install -Dm644 esv.1 ${DESTDIR}${MANPREFIX}/man1
|
||||||
|
install -Dm644 esv.conf.5 ${DESTDIR}${MANPREFIX}/man5
|
||||||
|
|
||||||
|
.PHONY: all clean install
|
95
configure
vendored
95
configure
vendored
|
@ -4,40 +4,9 @@
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
import=import
|
mkf=config.mk
|
||||||
|
|
||||||
mkf=Makefile
|
|
||||||
objs='esv.o esvapi.o initial.o'
|
objs='esv.o esvapi.o initial.o'
|
||||||
srcs='esv.d esvapi.d initial.d'
|
srcs='esv.d esvapi.d initial.d'
|
||||||
makefile='
|
|
||||||
IMPORT = '"$import"'
|
|
||||||
PREFIX = /usr/local
|
|
||||||
MANPREFIX = ${PREFIX}/man
|
|
||||||
|
|
||||||
DC = ${_DC}
|
|
||||||
CFLAGS = ${_CFLAGS}
|
|
||||||
OBJS = ${_OBJS}
|
|
||||||
|
|
||||||
all: esv
|
|
||||||
|
|
||||||
esv: ${OBJS}
|
|
||||||
${DC} ${_LDFLAGS} -of=$@ ${OBJS}
|
|
||||||
|
|
||||||
.SUFFIXES: .d .o
|
|
||||||
|
|
||||||
.d.o:
|
|
||||||
${DC} ${CFLAGS} -c $<
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f esv ${OBJS} ${INIOBJS}
|
|
||||||
|
|
||||||
install:
|
|
||||||
install -Dm755 esv ${DESTDIR}${PREFIX}/bin/esv
|
|
||||||
install -Dm644 esv.1 ${DESTDIR}${MANPREFIX}/man1/esv.1
|
|
||||||
install -Dm644 esv.conf.5 ${DESTDIR}${MANPREFIX}/man5/esv.conf.5
|
|
||||||
|
|
||||||
.PHONY: all clean install
|
|
||||||
'
|
|
||||||
|
|
||||||
# utility functions
|
# utility functions
|
||||||
|
|
||||||
|
@ -45,10 +14,10 @@ present () {
|
||||||
command -v "$1" 1>/dev/null 2>/dev/null
|
command -v "$1" 1>/dev/null 2>/dev/null
|
||||||
}
|
}
|
||||||
using () {
|
using () {
|
||||||
>&2 printf "using $1\n"
|
>&2 printf "using %s\n" "$1"
|
||||||
}
|
}
|
||||||
error () {
|
throw () {
|
||||||
>&2 printf "$(basename $0): $1\n"
|
>&2 printf "%s: %s\n" "$(basename "$0")" "$1"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,7 +25,7 @@ error () {
|
||||||
|
|
||||||
## D compiler
|
## D compiler
|
||||||
gen_DC () {
|
gen_DC () {
|
||||||
if ! [ -z "$dc" ]; then
|
if [ -n "$dc" ]; then
|
||||||
using "$dc"
|
using "$dc"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
@ -65,7 +34,7 @@ gen_DC () {
|
||||||
elif present dmd; then
|
elif present dmd; then
|
||||||
dc=dmd
|
dc=dmd
|
||||||
else
|
else
|
||||||
error "D compiler not found; install ldc or dmd"
|
throw "D compiler not found; install ldc or dmd"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
using "$dc"
|
using "$dc"
|
||||||
|
@ -101,7 +70,7 @@ gen_LDFLAGS () {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [ -z "$debug" ]; then
|
if [ -z "$debug" ]; then
|
||||||
if ! [ -z "$ldflags" ]; then ldflags="$ldflags "; fi
|
if [ -n "$ldflags" ]; then ldflags="$ldflags "; fi
|
||||||
ldflags="$ldflags-L--gc-sections"
|
ldflags="$ldflags-L--gc-sections"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -118,7 +87,7 @@ while getopts c:dhr ch; do
|
||||||
case "$OPTARG" in
|
case "$OPTARG" in
|
||||||
ldc2) dc="ldc2" ;;
|
ldc2) dc="ldc2" ;;
|
||||||
dmd) dc="dmd" ;;
|
dmd) dc="dmd" ;;
|
||||||
*) error "unknown D compiler '$OPTARG' specified (valid options: ldc2, dmd)" ;;
|
*) throw "unknown D compiler '$OPTARG' specified (valid options: ldc2, dmd)" ;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
d) debug=1 ;;
|
d) debug=1 ;;
|
||||||
|
@ -135,7 +104,7 @@ options:
|
||||||
EOF
|
EOF
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
?) exit 1 ;;
|
'?') exit 1 ;;
|
||||||
:) exit 1 ;;
|
:) exit 1 ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
@ -147,33 +116,29 @@ gen_CFLAGS
|
||||||
gen_LDFLAGS
|
gen_LDFLAGS
|
||||||
|
|
||||||
rm -f "$mkf"
|
rm -f "$mkf"
|
||||||
printf '# begin generated definitions' >>"$mkf"
|
|
||||||
printf '
|
{
|
||||||
|
printf '# begin generated definitions
|
||||||
_DC = %s
|
_DC = %s
|
||||||
_CFLAGS = %s
|
_CFLAGS = %s
|
||||||
_LDFLAGS = %s
|
_LDFLAGS = %s
|
||||||
' \
|
' "$dc" "$cflags" "$ldflags"
|
||||||
"$dc" \
|
|
||||||
"$cflags" \
|
|
||||||
"$ldflags" \
|
|
||||||
>>"$mkf"
|
|
||||||
## generate obj list
|
|
||||||
printf '_OBJS =' >>"$mkf"
|
|
||||||
for obj in $objs; do
|
|
||||||
printf " $obj" >>"$mkf"
|
|
||||||
done
|
|
||||||
printf '\n' >>"$mkf"
|
|
||||||
printf '# end generated definitions\n' >>"$mkf"
|
|
||||||
|
|
||||||
printf "$makefile" >>"$mkf"
|
## generate obj list
|
||||||
|
printf '_OBJS ='
|
||||||
|
for obj in $objs; do
|
||||||
|
printf ' %s' "$obj"
|
||||||
|
done
|
||||||
|
printf '\n# end generated definitions\n'
|
||||||
|
|
||||||
## generate dependency list
|
## generate dependency list
|
||||||
>&2 printf "generating dependency list\n"
|
printf '\n# begin generated dependencies\n'
|
||||||
printf '\n# begin generated dependencies\n' >>"$mkf"
|
i=1
|
||||||
i=1
|
for obj in $objs; do
|
||||||
for obj in $objs; do
|
"$dc" -o- -makedeps \
|
||||||
"$dc" -O0 -o- -makedeps \
|
"$(printf '%s' "$srcs" | awk '{print $'"$i"'}')"
|
||||||
"$(printf "$srcs" | awk '{print $'"$i"'}')" >>"$mkf"
|
i="$((i + 1))"
|
||||||
i="$(($i + 1))"
|
done
|
||||||
done
|
unset i
|
||||||
printf '# end generated dependencies\n' >>"$mkf"
|
printf '# end generated dependencies\n'
|
||||||
|
} >>"$mkf"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue