+# Makefile
+# top level makefile of LilyPond
+
include Variables.make
-$(exe): $(obs)
- $(CXX) -o $@ $^ $(LOADLIBES)
+.SUFFIXES:
+.SUFFIXES: .cc .o .hh .y .l .pod .txt .1 .dep
-clean:
- $(MAKE) -C objects clean
- rm -f $(exe) *.o $(DOCDIR)/* core
-distclean: clean
- rm -f depend version.hh $(gencc) .GENERATE *~
+$(exe): $(obs)
+ $(STRIPDEBUG) $(STABLEOBS)
+ $(LINKER) -o $@ $^ $(LOADLIBES)
-all: kompijl doc
+$(m2m): $(m2mobs)
+ $(LINKER) -o $@ $^ $(LOADLIBES)
-# doc++ documentation of classes
-doc:
- -mkdir $(DOCDIR)
- doc++ -p -I -d $(DOCDIR) $(progdocs)
+.PHONY: clean docxx
-depend: Sources.make .GENERATE
- touch depend
- $(MAKE) realdepend
+clean:
+ rm -f $(allexe) $(DOCDIR)/* core $(allobs)
+ for SUBDIR in $(SUBDIRS); \
+ do \
+ $(MAKE) SUBDIR=$$SUBDIR -C $$SUBDIR clean;\
+ done
+distclean: clean
+ rm -f version.hh $(gencc) .GENERATE *~ $(ALLDEPS)
-$(OBJECTDIR)/%.o: $(CCDIR)/%.cc
- $(CXX) -c $(CXXFLAGS) $(OUTPUT_OPTION)
+all: $(exe) $(m2m) doc
-# hack to create these sources once, before the dependencies
-.GENERATE:
- touch .GENERATE depend
- $(MAKE) version.hh
- $(MAKE) $(gencc)
- rm -f depend
+# value of $(OSTYPE) on windhoos; "make $OSTYPE" if you use bash :-)
+win32:
+ $(MAKE) -C . CXX=g++
-realdepend: $(cc)
- $(CXX) $(CXXFLAGS) -MM $^ | perl -ne 's#hdr/proto.hh##; s/^(.+)\.o/'$(OBJECTDIR)'\/\1.o/; print;' > depend
+doc:
+ $(MAKE) -C Documentation doc
-include depend
+# doc++ documentation of classes
+docxx: $(progdocs)
+ doc++ -kp -d $(DOCDIR) $^
-$(CCDIR)/parser.cc: parser.y
- $(BISON) -d $<
- mv $(CCDIR)/parser.tab.h $(HEADERDIR)/parser.hh
- mv $(CCDIR)/parser.tab.c $@
-parser.hh: parser.cc
+include $(DEPDIR)/*.dep
-version.o: $(obs) version.hh
+$(OBJECTDIR)/%.o: $(CCDIR)/%.cc
+ $(DODEP)\
+ $(CXX) -c $(CXXFLAGS) $(OUTPUT_OPTION)
-hdr/version.hh: Variables.make make_version
- make_version $(MAJVER) $(MINVER) $(PATCHLEVEL) > $@
+$(OBJECTDIR)/version.o: $(obs) $(HEADERDIR)/version.hh
-$(CCDIR)/lexer.cc: lexer.l
- $(FLEX) -+ -t $< > $@
+include Generate.make
dist:
-mkdir $(DDIR)
ln $(DFILES) $(DDIR)/
- for a in $(SUBDIRS); \
- do mkdir $(DDIR)/$$a; \
- $(MAKE) -C $$a dist;\
+ for SUBDIR in $(SUBDIRS); \
+ do mkdir $(DDIR)/$$SUBDIR; \
+ $(MAKE) SUBDIR=$$SUBDIR -C $$SUBDIR dist;\
done
tar cfz $(DNAME).tar.gz $(DNAME)/
rm -rf $(DDIR)/
-
-
TAGS:
$(MAKE) -C $(HEADERDIR) TAGS
$(MAKE) -C $(CCDIR) TAGS