summaryrefslogtreecommitdiff
path: root/GNUmakefile.in
blob: b977c8558b2ec45373ebba159555c4f8385b1100 (about) (plain)
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# -*-Makefile-*-
# title	   specific top level makefile for LilyPond  

# subdir level:
#
depth = .
#

# descent order into subdirectories
# 
SUBDIRS = buildscripts python scripts \
	elisp \
	flower lily \
	mf ly tex ps scm \
	po make \
	cygwin debian stepmake \
	Documentation input \
	vim 
#

SCRIPTS = configure aclocal.m4 autogen.sh lexer-gcc-3.1.sh
README_FILES = ChangeLog  COPYING DEDICATION ROADMAP THANKS 
README_TXT_FILES = AUTHORS.txt README.txt INSTALL.txt NEWS.txt
IN_FILES := $(wildcard *.in)
PATCH_FILES = emacsclient.patch server.el.patch darwin.patch
EXTRA_DIST_FILES = VERSION .cvsignore $(README_FILES) $(SCRIPTS) $(IN_FILES) \
  $(PATCH_FILES) 
NON_ESSENTIAL_DIST_FILES = $(README_TXT_FILES)
INSTALLATION_DIR=$(local_lilypond_datadir)
INSTALLATION_FILES=$(config_make) VERSION

# bootstrap stepmake:
#
STEPMAKE_TEMPLATES=toplevel po install
include $(depth)/make/stepmake.make 

doc: 
	$(MAKE) -C Documentation

install-WWW:
	-$(INSTALL) -m 755 -d $(webdir) 
	tar -C $(webdir)/ -xzf $(outdir)/web.tar.gz
# install-WWW does not recurse; fake it visiting Documentation/user manually
	$(MAKE) -C Documentation/user local-install-WWW

web-install:
	$(MAKE) out=www install-WWW
	$(MAKE) out=www 

uninstall-WWW:
	#TODO

web-uninstall:
	$(MAKE) out=www uninstall-WWW=

local-install:
	$(INSTALL) -d $(local_lilypond_datadir)

final-install:
	@echo
	@echo " *** Before running, buildscripts/out/lilypond-{profile,login}"
	@echo " *** must be run. You're advised to source these scripts from your "
	@echo " *** login scripts. For more information, see Invoking LilyPond in the manual."
	@echo

web-ext = gz html midi pdf png txt ly

footify = MAILADDRESS=bug-lilypond@gnu.org  $(PYTHON) $(step-bindir)/add-html-footer.py  --name $(PACKAGE_NAME) --version $(TOPLEVEL_VERSION)

local-WWW-post:
	$(PYTHON) $(buildscript-dir)/mutopia-index.py -o $(builddir)/examples.html ./
	cd $(builddir) && $(footify) `$(FIND) . -name '*.html' -print`
	cd $(builddir) && rm -f `find . -name \*.html~ -print`
	cd $(builddir) && find Documentation input \
		$(web-ext:%=-path '*/out-www/*.%' -or) -false \
		> $(outdir)/weblist
	echo '<META HTTP-EQUIV="refresh" content="0;URL=Documentation/out-www/index.html">' > $(builddir)/index.html
	echo '<html><body>Redirecting to the documentation index...</body></html>' >> $(builddir)/index.html
	cd $(builddir) && ls *.html >> $(outdir)/weblist
	cat $(outdir)/weblist | (cd $(builddir); GZIP=-9v tar -czf $(outdir)/web.tar.gz  -T -)


src-ext = c cc yy ll hh icc py scm tex ps texi itexi tely itely sh

web-clean:
	$(MAKE) out=www clean
	$(MAKE) $(builddir)/share/lilypond-force

default: $(config_h) builddir-setup 

builddir-setup: $(builddir)/share/lilypond-force

PO_FILES = $(wildcard $(srcdir)/po/*.po)
HELP_CATALOGS = $(PO_FILES:$(srcdir)/po/%.po=%)
CATALOGS = $(HELP_CATALOGS:lilypond=) 

$(builddir)/share/lilypond-force:
# Preparing LilyPond tree for builddir exec
	cd $(builddir) && rm -rf lib share
	mkdir -p $(builddir)/lib/lilypond
	mkdir -p $(builddir)/share/lilypond
	mkdir -p $(builddir)/share/lilypond/elisp
	mkdir -p $(builddir)/share/lilypond/fonts
	mkdir -p $(builddir)/share/lilypond/tex
	cd $(builddir)/lib/lilypond && \
		ln -s  ../../python/$(outconfbase) python
	cd $(builddir)/share/lilypond && \
		ln -s $(abs-srcdir)/ly ly && \
		ln -s ../../mf/$(outconfbase) dvips && \
		ln -s ../../mf/$(outconfbase) afm && \
		ln -s ../../mf/$(outconfbase) tfm && \
		ln -s $(abs-srcdir)/mf && \
		ln -s $(abs-srcdir)/ps && \
		ln -s ../../python/$(outconfbase) python && \
		ln -s $(abs-srcdir)/scm
	cd $(builddir)/share/lilypond/tex && \
		ln -s $(abs-srcdir)/tex source && \
		ln -s ../../../mf/$(outconfbase) generate
	cd $(builddir)/share/lilypond/fonts && \
		ln -s $(abs-srcdir)/mf source && \
		ln -s ../../../mf/$(outconfbase) afm && \
		ln -s ../../../mf/$(outconfbase) tfm && \
		ln -s ../../../mf/$(outconfbase) type1
	cd $(builddir)/share/lilypond/elisp && \
		ln -sf ../../../elisp/$(outconfbase)/lilypond.words.el . && \
		ln -s $(abs-srcdir)/elisp/*.el .
	$(foreach i,$(CATALOGS), \
		mkdir -p $(builddir)/share/locale/$i/LC_MESSAGES && \
		cd $(builddir)/share/locale/$i/LC_MESSAGES && \
		ln -fs ../../../../po/$(outconfbase)/$i.mo lilypond.mo &&) true
	touch $@

local-clean: builddir-setup-clean
builddir-setup-clean:
	cd $(builddir) && rm -rf share

$(config_h): config.hh.in 
#
# this is to prevent people from getting
# undefined symbols  when we add them to config.h.in,
# and they blindly run "cvs update; make".
#
	@echo
	@echo ' *** $(config_h) is out of date'
	@echo ' *** Remove it and rerun autogen:'
	@echo '         rm $(config_h); ./autogen.sh'
	@echo
	@false