From 431633612f1f06ae92122cb81bc809cf81f34df3 Mon Sep 17 00:00:00 2001 From: Lephenixnoir Date: Mon, 11 Jan 2021 22:18:22 +0100 Subject: [PATCH] rewrite configure script --- configure | 120 +++++++++++++++++++----------------------------------- 1 file changed, 42 insertions(+), 78 deletions(-) diff --git a/configure b/configure index d55b477..b93e9e6 100755 --- a/configure +++ b/configure @@ -1,41 +1,21 @@ -#! /bin/bash +#! /usr/bin/env bash -# -# Output variables -# - -# Path parameters +# Install prefix PREFIX="$HOME/.local" # Individual component selection BUILD_fxsdk=1 BUILD_fxconv=1 BUILD_fxg1a=1 -# -# Tool name checking -# - -check() -{ - [[ $1 = "fxsdk" ]] || - [[ $1 = "fxconv" ]] || - [[ $1 = "fxg1a" ]] -} - -# -# Usage -# - -help() -{ - cat << EOF +help() { + cat << EOF Configuration options for the fxSDK (fx9860g and fxcg50 development tools). Tool selection: may be one of the following: - "fxsdk" Command-line options (you generally want this) - "fxconv" Asset conversion for gint (or any 4-aligned-VRAM system) - "fxg1a" G1A file wrapper, editor and analyzer + fxsdk Project management (you generally want this) + fxconv Asset conversion for standard and custom gint formats + fxg1a G1A file wrapper, editor and analyzer --enable- Build and install the selected tool [default] --disable- Do not build or install the selected tool @@ -46,65 +26,49 @@ Install folders: --prefix= Base install folder [default $HOME/.local] EOF - exit 0 + exit 0 } -# -# Argument parsing -# - +# Parse arguments for arg; do case "$arg" in - -h | -? | --help) - help;; + -h | -? | --help) + help;; - --prefix=*) - PREFIX=${arg#--prefix=};; + --prefix=*) + PREFIX=${arg#--prefix=};; - --enable-*) - tool="${arg#--enable-}" - if ! check $tool; then - echo "error: cannot enable $tool: unknown tool" - exit 1 - fi + --enable-*) + tool="${arg#--enable-}" + if [[ ! ":fxsdk:fxg1a:fxconv:" =~ ":$tool:" ]]; then + echo "error: $arg: no such tool" + exit 1 + fi + eval "BUILD_${tool}=1";; - eval "BUILD_${tool}=1";; + --disable-*) + tool="${arg#--disable-}" + if [[ ! ":fxsdk:fxg1a:fxconv:" =~ ":$tool:" ]]; then + echo "error: $arg: no such tool" + exit 1 + fi + eval "BUILD_${tool}=0";; - --disable-*) - tool="${arg#--disable-}" - if ! check $tool; then - echo "error: cannot disable $tool: unknown tool" - exit 1 - fi - - eval "BUILD_${tool}=0";; - - *) - echo "error: unrecognized option $arg" - exit 1;; + *) + echo "error: unrecognized option $arg" + exit 1;; esac; done -# -# Makefile generation -# - -gen() -{ - # Allow an install script to change the destination at the last second - # to have all files in a separate root before packaging - echo "PREFIX ?= $PREFIX" - echo -n "TARGETS =" - - [[ $BUILD_fxsdk = 1 ]] && echo -n " fxsdk" - [[ $BUILD_fxconv = 1 ]] && echo -n " fxconv" - [[ $BUILD_fxg1a = 1 ]] && echo -n " fxg1a" - - echo "" +# Generate sub-Makefile with configuration details +gen() { + # Allow an install script to change the destination at the last second + # to have all files in a separate root before packaging + # TODO: Support DESTDIR instead + echo "PREFIX ?= $PREFIX" + echo -n "TARGETS =" + [[ $BUILD_fxsdk = 1 ]] && echo -n " fxsdk" + [[ $BUILD_fxconv = 1 ]] && echo -n " fxconv" + [[ $BUILD_fxg1a = 1 ]] && echo -n " fxg1a" + echo "" } -echo "Configuration complete, the following has been saved in Makefile.cfg:" -echo "" - -gen | tee Makefile.cfg - -echo "" -echo "You can now 'make'." +gen > Makefile.cfg