1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
#!/usr/bin/make
MAIN := music123
GNATMAKE := gnatmake
CFLAGS := -g -O2 -gnatf -gnatwa -gnaty -gnatwe
LDFLAGS :=
GZIP_FLAGS := --best --name
STRIP_OPTION :=
MSGFMT_FLAGS :=
DESTDIR := /
PREFIX := usr/local
INSTALL_BIN := $(DESTDIR)/$(PREFIX)/bin
INSTALL_DOC := $(DESTDIR)/$(PREFIX)/share/doc/$(MAIN)
INSTALL_ETC := $(DESTDIR)/etc
INSTALL_EXAMPLES := $(DESTDIR)/$(PREFIX)/share/doc/$(MAIN)/examples
INSTALL_LOCALE := $(DESTDIR)/$(PREFIX)/share/locale
INSTALL_MAN := $(DESTDIR)/$(PREFIX)/share/man
# Default target.
.PHONY: build
build:
# build prerequisites will be added later
.PHONY: install
install:: build
# install rules will be added later
.PHONY: clean
clean::
find . -name "*~" -delete
# clean rules will be added later
###########################################################################
# Documentation, examples and system-wide configuration
install::
install -D --mode 644 README $(INSTALL_DOC)/README
install -D --mode 644 music123rc.conf $(INSTALL_ETC)/music123rc
install -D --mode 644 wavgzplay.sh.1 $(INSTALL_EXAMPLES)/wavgzplay.sh.1
install -D --mode 755 wavgzplay.sh $(INSTALL_EXAMPLES)/wavgzplay.sh
###########################################################################
# Main executable
build: $(MAIN)
.PHONY: $(MAIN) # allways call gnatmake
$(MAIN):
$(GNATMAKE) $@ -cargs $(CFLAGS) -largs $(LDFLAGS)
install::
install $(STRIP_OPTION) -D --mode 755 $(MAIN) $(INSTALL_BIN)/$(MAIN)
clean::
rm -f $(MAIN) b~$(MAIN)* *.o *.ali
###########################################################################
# Manpage
MANPAGE := $(MAIN).1.gz
build: $(MAIN).1.gz
$(MAIN).1.gz: $(MAIN).1
gzip $(GZIP_FLAGS) $< --stdout > $@
install::
install -D --mode 644 $(MAIN).1.gz $(INSTALL_MAN)/man1/$(MAIN).1.gz
clean::
rm -f $(MAIN).1.gz
###########################################################################
# Manpages translations
MAN_TRANSLATIONS := $(wildcard $(MAIN).*.1)
MAN_TRANSLATION_LOCALES := $(patsubst $(MAIN).%.1,%,$(MAN_TRANSLATIONS))
MAN_TRANSLATION_TARGETS := $(addsuffix .man,$(MAN_TRANSLATION_LOCALES))
build: $(MAN_TRANSLATION_TARGETS)
$(MAN_TRANSLATION_TARGETS): %.man: $(MAIN).%.1
gzip $(GZIP_FLAGS) $< --stdout > $@
install::
for locale in $(MAN_TRANSLATION_LOCALES); do \
install -D --mode 644 $$locale.man $(INSTALL_MAN)/$$locale/man1/$(MAIN).1.gz; \
done
clean::
rm -f $(MAN_TRANSLATION_TARGETS)
###########################################################################
# Gettext
PO_FILES := $(wildcard po/*.po)
MO_LOCALES := $(patsubst po/%.po,%,$(PO_FILES))
MO_TARGETS := $(addsuffix .mo,$(MO_LOCALES))
build: $(MO_TARGETS)
$(MO_TARGETS): %.mo: po/%.po
msgfmt $(MSGFMT_FLAGS) $< -o $@
install::
for locale in $(MO_LOCALES); do \
install -D --mode 644 $$locale.mo $(INSTALL_LOCALE)/$$locale/LC_MESSAGES/$(MAIN).mo; \
done
clean::
rm -f $(MO_TARGETS)
|