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.
 
 
 
 
 
 

140 lines
3.5 KiB

  1. #
  2. # Neo/Compose/Makefile
  3. # Autor: hcw@gmx.de
  4. # Ort der Modul-Dateien
  5. #
  6. SRC = ./src
  7. PSEUDO_MODULES_FILES = $(SRC)/enUS.module
  8. MODULES_FILES = $(PSEUDO_MODULES_FILES) $(wildcard $(SRC)/*.module)
  9. # Gewünschte Build-Reihenfolge der Module. Die in den Listen
  10. # genannten Dateien werden (falls Module dieses Namens existieren) in
  11. # der vorgegebenen Reihenfolge zwingend am Anfang oder am Ende von
  12. # XCompose eingefügt. Alle nicht erwähnten Module kommen in
  13. # alphabetischer Reihenfolge in die Mitte.
  14. #
  15. MODULE_ORDER_HEAD = pre1 pre2 pre3 pre4 enUS base
  16. MODULE_ORDER_TAIL = user post1 post2 post3 post4
  17. M := $(sort $(notdir $(basename $(MODULES_FILES))))
  18. MODULES := $(foreach i, $(MODULE_ORDER_HEAD), $(findstring $(i),$(M)))
  19. MODULES += $(filter-out $(MODULE_ORDER_HEAD) $(MODULE_ORDER_TAIL), $(M))
  20. MODULES += $(foreach i, $(MODULE_ORDER_TAIL), $(findstring $(i),$(M)))
  21. $(if $(findstring _,$(M)), \
  22. $(error Unterstrich in Dateinamen $(SRC)/*.module nicht erlaubt))
  23. # Liste von Demofiles, werden bei 'make all' erzeugt.
  24. # Im Grunde ist dies seit 'make config' überflüssig.
  25. #
  26. DEMOFILES = \
  27. XCompose_enUS_base \
  28. XCompose_enUS_base_math \
  29. XCompose_enUS_base_math_greek_lang \
  30. XCompose_enUS_base_greek_lang \
  31. XCompose_enUS_base_roman \
  32. XCompose_enUS_base_math_greek_lang_cyrillic
  33. # Hilfsprogramme
  34. #
  35. CHECKCOMPOSE = ./check-compose.pl
  36. CONFIGURE = /bin/bash ./configure.sh
  37. # Nutzerkonfiguration für Zusammenstellung der Datei XCompose.
  38. # Datei .config wird von 'make config' interaktiv geschrieben.
  39. # Defaultwert, falls .config noch nicht existiert.
  40. #
  41. -include $(wildcard .config)
  42. USER_XCOMPOSE ?= XCompose_enUS_base_math
  43. #
  44. # 'make' bzw. 'make all' erzeugt die Datei XCompose ohne Installation
  45. #
  46. all : XCompose $(DEMOFILES)
  47. #
  48. # 'make config' führt interaktive Abfrage der Konfiguration durch
  49. # und legt Ergebnis in .config ab
  50. .config :
  51. @echo Kein .config gefunden. Beginne mit Default.
  52. @echo "USER_XCOMPOSE = $(USER_XCOMPOSE)" > .config
  53. config : $(PSEUDO_MODULES_FILES) .config
  54. @$(CONFIGURE) $(MODULES)
  55. #
  56. # 'make XCompose_foo_bar_baz' erzeugt Datei aus Modulen foo bar baz
  57. #
  58. XCompose_% : $(MODULES_FILES)
  59. @echo "Erzeuge $@."
  60. @echo "#" >$@
  61. @echo "# Automatically generated file $@. Do not edit." >>$@
  62. @echo "#" >>$@
  63. @for i in \
  64. `echo $@ | sed -e 's/XCompose//;s/_/ /g'` ;\
  65. do \
  66. fn=$(SRC)/$$i.module ;\
  67. if [ -e $$fn ]; then \
  68. echo "# begin include module $$i" >>$@ ;\
  69. cat $$fn >>$@ ;\
  70. echo "# end include module $$i" >>$@ ;\
  71. else \
  72. echo "*** Warnung: Datei $$fn kann nicht eingebunden werden" ;\
  73. fi \
  74. done
  75. XCompose : $(USER_XCOMPOSE) $(wildcard .config)
  76. cp $< $@
  77. #
  78. # Regeln für Pseudo-Module
  79. #
  80. # Im Grunde braucht src/en_US.UTF-8 gar nicht in der Neo-Distribution
  81. # enthalten zu sein; man könnte stattdessen auch an dieser Stelle
  82. # die Abhängigkeit
  83. # $(SRC)/enUS.module : /usr/share/X11/locale/en_US.UTF-8/Compose
  84. # setzen.
  85. #
  86. $(SRC)/enUS.module : $(SRC)/en_US.UTF-8
  87. @ ( \
  88. echo "# File $@, wird aus $< durch Kopieren erzeugt." ;\
  89. echo "#configinfo en_US.UTF-8, Standard unabhängig von Neo" ;\
  90. cat $< \
  91. ) > $@
  92. #
  93. # Installiere ins Homeverzeichnis
  94. #
  95. install : XCompose
  96. cp XCompose $${HOME}/.XCompose
  97. #
  98. # Test der XCompose-Dateien auf Korrektheit
  99. #
  100. check :
  101. @for i in $(wildcard XCompose*) ; do \
  102. $(CHECKCOMPOSE) -q $$i || (\
  103. echo Problem in Datei $$i. ;\
  104. echo Mehr Informationen mit \`$(CHECKCOMPOSE) $$i\'. ); done
  105. #
  106. # weitere Standard-Targets
  107. #
  108. clean :
  109. -rm -f XCompose_*
  110. -rm -f XCompose
  111. distclean : clean
  112. -rm -f .config
  113. -rm -f $(SRC)/enUS.module
  114. .PHONY : all config check clean distclean install