Neo ist eine ergonomische Tastaturbelegung, welche für die deutsche Sprache optimiert ist. https://neo-layout.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
neo-layout/Compose/Makefile

156 lines
4.0 KiB

#
# Neo/Compose/Makefile
# Autor: hcw@gmx.de
# Ort der Modul-Dateien
#
SRC = ./src
PSEUDO_MODULES_FILES = $(SRC)/enUS.module
MODULES_FILES = $(PSEUDO_MODULES_FILES) $(wildcard $(SRC)/*.module) $(wildcard $(SRC)/*.remove)
# Gewünschte Build-Reihenfolge der Module. Die in den Listen
# genannten Dateien werden (falls Module dieses Namens existieren) in
# der vorgegebenen Reihenfolge zwingend am Anfang oder am Ende von
# XCompose eingefügt. Alle nicht erwähnten Module kommen in
# alphabetischer Reihenfolge in die Mitte.
#
MODULE_ORDER_HEAD = pre1 pre2 pre3 pre4 enUS base
MODULE_ORDER_TAIL = user post1 post2 post3 post4
M := $(sort $(notdir $(basename $(MODULES_FILES))))
MODULES := $(foreach i, $(MODULE_ORDER_HEAD), $(findstring $(i),$(M)))
MODULES += $(filter-out $(MODULE_ORDER_HEAD) $(MODULE_ORDER_TAIL), $(M))
MODULES += $(foreach i, $(MODULE_ORDER_TAIL), $(findstring $(i),$(M)))
$(if $(findstring _,$(M)), \
$(error Unterstrich in Dateinamen $(SRC)/*.module nicht erlaubt))
# Hilfsprogramme
#
CHECKCOMPOSE = ./check-compose.pl
CONFIGURE = 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 $(wildcard .config)
USER_XCOMPOSE ?= XCompose_enUS_base_cyrillic_diacritics_lang_greek_math_math-font
#
# 'make' bzw. 'make all' erzeugt die Datei XCompose ohne Installation
#
all : XCompose
#
# 'make config' führt interaktive Abfrage der Konfiguration durch
# und legt Ergebnis in .config ab
.config :
@echo Kein .config gefunden. Beginne mit Default.
@echo "USER_XCOMPOSE = $(USER_XCOMPOSE)" > .config
config : $(PSEUDO_MODULES_FILES) .config
@$(CONFIGURE) $(MODULES)
#
# 'make XCompose_foo_bar_baz' erzeugt Datei aus Modulen foo bar baz
#
#
XCompose_% : remove_% joined_%
# Entferne Zeilen aus remove_%
# Entferne Leerzeilen und Kommentarzeilen
# Entferne alles ab dem zweiten "
# Normalisiere Whitespace außerhalb von " "
# Sortiere und Entferne Duplikate
@echo "Erzeuge $@."
@grep -Fvxf $^ | \
grep -v -e '^#' -e '^\s*$$' | \
perl -pe 's/(.*".*").*/\1/' | \
perl -pe 's{("[^"]*"|[^"\t ]+)|\s+}{$$1 // " "}ge' | \
sort -u > $@
joined_% : $(MODULES_FILES)
@echo "Erzeuge $@."
@echo "#" >$@
@echo "# Automatically generated file $@. Do not edit." >>$@
@echo "#" >>$@
@for i in \
`echo $@ | sed -e 's/joined_//;s/_/ /g'` ;\
do \
fn=$(SRC)/$$i.module ;\
if [ -e $$fn ]; then \
echo "# begin include module $$i" >>$@ ;\
cat $$fn >>$@ ;\
echo "# end include module $$i" >>$@ ;\
else \
echo "*** Warnung: Datei $$fn kann nicht eingebunden werden" ;\
fi \
done
remove_% : $(MODULES_FILES)
@echo "Erzeuge $@."
@echo "#" >$@
@echo "# Automatically generated file $@. Do not edit." >>$@
@echo "#" >>$@
@for i in \
`echo $@ | sed -e 's/remove_//;s/_/ /g'` ;\
do \
fn=$(SRC)/$$i.remove ;\
if [ -e $$fn ]; then \
cat $$fn >>$@ ;\
fi \
done
XCompose : $(USER_XCOMPOSE) $(wildcard .config)
cp $< $@
#
# Regeln für Pseudo-Module
#
# Im Grunde braucht src/en_US.UTF-8 gar nicht in der Neo-Distribution
# enthalten zu sein; man könnte stattdessen auch an dieser Stelle
# die Abhängigkeit
# $(SRC)/enUS.module : /usr/share/X11/locale/en_US.UTF-8/Compose
# setzen.
#
$(SRC)/enUS.module : $(SRC)/en_US.UTF-8
@ ( \
echo "# File $@, wird aus $< durch Kopieren erzeugt." ;\
echo "#configinfo en_US.UTF-8, Standard unabhängig von Neo" ;\
cat $< \
) > $@
#
# 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 Datei $$i. ;\
echo Mehr Informationen mit \`$(CHECKCOMPOSE) $$i\'. ); done
#
# weitere Standard-Targets
#
clean :
-rm -f XCompose_*
-rm -f XCompose
distclean : clean
-rm -f .config
-rm -f $(SRC)/enUS.module
.PHONY : all config check clean distclean install