From aff54695af251b85e075034ab6875ece5673b5a6 Mon Sep 17 00:00:00 2001 From: hans-christoph Date: Fri, 17 Jul 2009 15:20:55 +0000 Subject: =?UTF-8?q?Makefile=20f=C3=BCr=20Compose=20erweitert.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. git-svn-id: https://svn.neo-layout.org@1939 b9310e46-f624-0410-8ea1-cfbb3a30dc96 --- Compose/Makefile | 113 ++++++++++++++++++++++++++++++--------------- Compose/configure.sh | 93 +++++++++++++++++++++++++++++++++++++ Compose/src/base.module | 1 + Compose/src/greek.module | 1 + Compose/src/klingon.module | 3 +- Compose/src/lang.module | 1 + Compose/src/math.module | 1 + Compose/src/roman.module | 1 + 8 files changed, 177 insertions(+), 37 deletions(-) create mode 100644 Compose/configure.sh diff --git a/Compose/Makefile b/Compose/Makefile index ee4d024..cc1f7d5 100644 --- a/Compose/Makefile +++ b/Compose/Makefile @@ -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 diff --git a/Compose/configure.sh b/Compose/configure.sh new file mode 100644 index 0000000..a0eb5e0 --- /dev/null +++ b/Compose/configure.sh @@ -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'" diff --git a/Compose/src/base.module b/Compose/src/base.module index 9ec661a..706b8dc 100644 --- a/Compose/src/base.module +++ b/Compose/src/base.module @@ -1,3 +1,4 @@ +#configinfo Standard-Definitionen (weitgehend auch außerhalb Neo verwendet) # standard Definitions by Neo keyboard layout # diacritical marks diff --git a/Compose/src/greek.module b/Compose/src/greek.module index ce64cb9..b7c0f00 100644 --- a/Compose/src/greek.module +++ b/Compose/src/greek.module @@ -1,3 +1,4 @@ +#configinfo Griechische Buchstaben mit Akzenten # additional Definitions by Neo keyboard layout - greek letters diff --git a/Compose/src/klingon.module b/Compose/src/klingon.module index 5596d75..2f7f1a8 100644 --- a/Compose/src/klingon.module +++ b/Compose/src/klingon.module @@ -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 <0> : "pagh" # KLINGON NUMERAL 0 diff --git a/Compose/src/lang.module b/Compose/src/lang.module index 8789511..104bd46 100644 --- a/Compose/src/lang.module +++ b/Compose/src/lang.module @@ -1,3 +1,4 @@ +#configinfo IPA (international phonetic alphabet) # IPA-Compose by aleχ, 2009, CC-BY-SA DE 3. : "ʙ" U0299 # LATIN LETTER SMALL CAPITAL B diff --git a/Compose/src/math.module b/Compose/src/math.module index 48cfbad..f0538df 100644 --- a/Compose/src/math.module +++ b/Compose/src/math.module @@ -1,3 +1,4 @@ +#configinfo mathematische Sonderzeichen # additional Definitions by Neo keyboard layout - mathematical symbols diff --git a/Compose/src/roman.module b/Compose/src/roman.module index 9f04bd0..b5aca2b 100644 --- a/Compose/src/roman.module +++ b/Compose/src/roman.module @@ -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 <1> : "ⅰ" # SMALL ROMAN NUMERAL 1 -- cgit v1.2.3