make - erzeugt XCompose gemäß Userkonfiguration make config - erfragt interaktiv Userkonfiguration make install - erzeugt und installiert ins Homeverzeichnis eigene_compose_erstellen ist damit ersetzt und kann gelöscht werden.feature/programmer
parent
374592de28
commit
e5b1c004c7
@ -1,60 +1,101 @@ |
||||
SRC = ./src
|
||||
#
|
||||
# Neo/Compose/Makefile
|
||||
# Autor: hcw@gmx.de
|
||||
|
||||
DEFAULTS = \
|
||||
base \
|
||||
base_math \
|
||||
base_greek \
|
||||
base_math_greek_lang \
|
||||
base_greek_lang \
|
||||
base_roman
|
||||
# Ort der Modul-Dateien
|
||||
#
|
||||
SRC = ./src
|
||||
MODULES_FILES = $(wildcard $(SRC)/*.module)
|
||||
MODULES = $(notdir $(basename $(MODULES_FILES)))
|
||||
|
||||
MODULES_SRC = $(wildcard $(SRC)/*.module)
|
||||
MODULES = $(notdir $(basename $(MODULES_SRC)))
|
||||
# Liste von Demofiles, werden bei 'make all' erzeugt.
|
||||
# Im Grunde ist dies seit 'make config' überflüssig.
|
||||
#
|
||||
DEMOFILES = \
|
||||
XCompose_base \
|
||||
XCompose_base_math \
|
||||
XCompose_base_math_greek_lang \
|
||||
XCompose_base_greek_lang \
|
||||
XCompose_base_roman
|
||||
|
||||
# Hilfsprogramme
|
||||
#
|
||||
CHECKCOMPOSE = ./check-compose.pl
|
||||
CONFIGURE = /bin/bash ./configure.sh
|
||||
|
||||
# Nutzerkonfiguration für Zusammenstellung der Datei XCompose.
|
||||
# Datei .config wird von 'make config' interaktiv geschrieben.
|
||||
# Defaultwert, falls .config noch nicht existiert.
|
||||
#
|
||||
-include ./.config |
||||
USER_XCOMPOSE ?= XCompose_base_math
|
||||
|
||||
#
|
||||
# 'make' bzw. 'make all' erzeugt die Datei XCompose ohne Installation
|
||||
#
|
||||
|
||||
all : XCompose $(DEMOFILES) |
||||
|
||||
#
|
||||
# 'make config' führt interaktive Abfrage der Konfiguration durch
|
||||
# und legt Ergebnis in .config ab
|
||||
#
|
||||
|
||||
config : |
||||
$(CONFIGURE) $(MODULES)
|
||||
|
||||
help : |
||||
@echo Available modules: $(MODULES).
|
||||
@echo Type \`make XCompose_mod1_mod2_mod3\' to create
|
||||
@echo " " compose file from modules \`mod1\', \`mod2\', and \`mod3\'.
|
||||
@echo Type \`make all\' to create default file set.
|
||||
@echo Type \`make clean\' to cleanup directory.
|
||||
@echo Copy the file XCompose_mod1_mod2_mod3 to \~/.XCompose afterwards.
|
||||
|
||||
all : $(addprefix XCompose_, $(DEFAULTS)) |
||||
|
||||
XCompose%: $(MODULES_SRC) |
||||
@echo Creating file $@
|
||||
echo "#" >$@
|
||||
echo "# Automatically generated file. Do not edit." >>$@
|
||||
echo "#" >>$@
|
||||
for i in \
|
||||
`echo $@ | sed -e 's/XCompose//;s/_/ /g'`;\
|
||||
#
|
||||
# 'make XCompose_foo_bar_baz' erzeugt Datei aus Modulen foo bar baz
|
||||
#
|
||||
|
||||
XCompose_% : $(MODULES_FILES) |
||||
@echo "Erzeuge $@."
|
||||
@echo "#" >$@
|
||||
@echo "# Automatically generated file $@. Do not edit." >>$@
|
||||
@echo "#" >>$@
|
||||
@for i in \
|
||||
`echo $@ | sed -e 's/XCompose//;s/_/ /g'` ;\
|
||||
do \
|
||||
fn=$(SRC)/$$i.module;\
|
||||
fn=$(SRC)/$$i.module ;\
|
||||
if [ -e $$fn ]; then \
|
||||
echo "# begin include module $$i" >>$@ ;\
|
||||
cat $$fn >>$@ ;\
|
||||
echo "# end include module $$i" >>$@ ;\
|
||||
else \
|
||||
echo "*** Warning: file $$fn not found";\
|
||||
echo "*** Warnung: Datei $$fn kann nicht eingebunden werden" ;\
|
||||
fi \
|
||||
done
|
||||
|
||||
XCompose : XCompose_base |
||||
XCompose : $(USER_XCOMPOSE) $(wildcard .config) |
||||
cp $< $@
|
||||
|
||||
check : |
||||
@for i in XCompose*; do \
|
||||
#
|
||||
# Installiere ins Homeverzeichnis
|
||||
#
|
||||
|
||||
install : XCompose |
||||
cp XCompose $${HOME}/.XCompose
|
||||
|
||||
#
|
||||
# Test der XCompose-Dateien auf Korrektheit
|
||||
#
|
||||
|
||||
check : |
||||
@for i in $(wildcard XCompose*) ; do \
|
||||
$(CHECKCOMPOSE) -q $$i || (\
|
||||
echo Problem in file $$i. ;\
|
||||
echo Run \`$(CHECKCOMPOSE) $$i\' for more details. ); done
|
||||
echo Problem in Datei $$i. ;\
|
||||
echo Mehr Informationen mit \`$(CHECKCOMPOSE) $$i\'. ); done
|
||||
|
||||
#
|
||||
# weitere Standard-Targets
|
||||
#
|
||||
|
||||
clean : |
||||
-rm -f XCompose_*
|
||||
-rm -f XCompose
|
||||
|
||||
distclean : clean |
||||
-rm -f .config
|
||||
|
||||
|
||||
.PHONY : clean help check |
||||
.PHONY : all config check clean distclean install |
||||
|
||||
|
@ -0,0 +1,93 @@ |
||||
# Erzeuge Konfiguration in .config |
||||
# |
||||
# Aufruf erfolgt über Makefile mittels 'make config' |
||||
# |
||||
# Autor: hcw@gmx.de |
||||
|
||||
# |
||||
# Kommandozeilenparameter: Liste der verfügbaren Module |
||||
MODULES=$* |
||||
|
||||
# Pfade und Dateinamen |
||||
CONFFILE=.config |
||||
MODPATH=./src |
||||
MODSUFFIX=.module |
||||
|
||||
if [ ! -e $CONFFILE ] ; then |
||||
# leere Konfiguration erzeugen |
||||
echo "USER_XCOMPOSE = base " > $CONFFILE |
||||
fi |
||||
|
||||
# |
||||
# verfügbare Module auslesen und Kurzbeschreibung anzeigen |
||||
# |
||||
|
||||
selprompt= |
||||
PS3="Gewählte Module sind mit '+' gekennzeichnet. |
||||
Auswahl (angegebene Ziffer oder 0 für Ende) > " |
||||
|
||||
echo Verfügbare Module für XCompose: |
||||
for i in ${MODULES}; do |
||||
sed -n " |
||||
/^#configinfo[ \t]*/{ |
||||
s//$i / |
||||
s/^\(.\{10\}\) */\1/ |
||||
p;q |
||||
} |
||||
|
||||
\${ |
||||
s/.*/$i - ohne Beschreibung/ |
||||
s/^\(.\{10\}\) */\1/ |
||||
p |
||||
}" ${MODPATH}/${i}${MODSUFFIX} |
||||
|
||||
if grep -q $i $CONFFILE; then |
||||
selprompt="${selprompt} ${i}+ "; |
||||
else |
||||
selprompt="${selprompt} ${i} "; |
||||
fi |
||||
done |
||||
echo |
||||
|
||||
# |
||||
# Nutzereingabe |
||||
# |
||||
|
||||
again=true |
||||
|
||||
while ${again} ; do |
||||
again=false |
||||
select MOD in ${selprompt}; do |
||||
case "X$MOD" in |
||||
X) |
||||
if [ "X$REPLY" != "X0" ]; then again=true; fi ;; |
||||
*) |
||||
again=true |
||||
selprompt=`echo $selprompt | sed "s/$MOD/$MOD+/;s/++//"` ;; |
||||
esac |
||||
break |
||||
done |
||||
done |
||||
|
||||
# |
||||
# Configfile erzeugen |
||||
# |
||||
|
||||
echo $selprompt | sed ' |
||||
s/$/ / # letztes Wort mit Leerzeichen abschließen |
||||
s/[^ +]\+ / /g # Wörter ohne plus am Ende löschen |
||||
s/+//g # alle Pluszeichen löschen |
||||
s/^ *// # Leerzeichen am Anfang und Ende löschen |
||||
s/ *$// # Leerzeichen am Anfang und Ende löschen |
||||
s/ \+/_/g # Leerzeichen normalisieren |
||||
s/^/USER_XCOMPOSE = XCompose_/ |
||||
' > $CONFFILE |
||||
|
||||
echo |
||||
echo Gewählte Module: |
||||
cat $CONFFILE |
||||
|
||||
grep -q base $CONFFILE || echo "*** Warnung: Modul 'base' wurde nicht gewählt." |
||||
|
||||
echo |
||||
echo "Weiter mit 'make' bzw. 'make install'" |
Loading…
Reference in new issue