Makefile für Compose erweitert.

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
hans-christoph 14 years ago
parent 374592de28
commit e5b1c004c7
  1. 113
      Compose/Makefile
  2. 93
      Compose/configure.sh
  3. 1
      Compose/src/base.module
  4. 1
      Compose/src/greek.module
  5. 3
      Compose/src/klingon.module
  6. 1
      Compose/src/lang.module
  7. 1
      Compose/src/math.module
  8. 1
      Compose/src/roman.module

@ -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'"

@ -1,3 +1,4 @@
#configinfo Standard-Definitionen (weitgehend auch außerhalb Neo verwendet)
# standard Definitions by Neo keyboard layout
# diacritical marks

@ -1,3 +1,4 @@
#configinfo Griechische Buchstaben mit Akzenten
# additional Definitions by Neo keyboard layout - greek letters

@ -1,4 +1,4 @@
# Autogenerated list of Klingon Numericals (k0-k3999, K0-K3999)
# Autogenerated list of Klingon Numericals (k0-k3999, K0-K3999)
#
# File encoding: UTF-8
# File format: Linux-Compose-Definitions
@ -6,6 +6,7 @@
# Licence (short name): CC-BY-SA 3.0 DE
# Licence (full name): Creative Commons Namensnennung-Weitergabe unter gleichen Bedingungen 3.0 Deutschland
# Licence-URL: http://creativecommons.org/licenses/by-sa/3.0/de/
#configinfo Klingonische Zahlen 0 bis 3999
<Multi_key> <k> <0> <space> : "pagh" # KLINGON NUMERAL 0

@ -1,3 +1,4 @@
#configinfo IPA (international phonetic alphabet)
# IPA-Compose by aleχ, 2009, CC-BY-SA DE 3.
<Multi_key> <B> <B> : "ʙ" U0299 # LATIN LETTER SMALL CAPITAL B

@ -1,3 +1,4 @@
#configinfo mathematische Sonderzeichen
# additional Definitions by Neo keyboard layout - mathematical symbols

@ -6,6 +6,7 @@
# Licence (short name): CC-BY-SA 3.0 DE
# Licence (full name): Creative Commons Namensnennung-Weitergabe unter gleichen Bedingungen 3.0 Deutschland
# Licence-URL: http://creativecommons.org/licenses/by-sa/3.0/de/
#configinfo römische Zahlen 1 bis 3999
<Multi_key> <r> <1> <space> : "ⅰ" # SMALL ROMAN NUMERAL 1

Loading…
Cancel
Save