From 531fb17b5a9c48e8b86d62b269cb83aa3cb419db Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Sat, 11 Nov 2000 13:42:11 +0100 Subject: [PATCH] patch::: 1.3.106.jcn2 1.3.106.jcn2 ============ * Cross compilation and info build fixes, really cancel all builtin rules, sigh. --- CHANGES | 6 + Documentation/user/GNUmakefile | 24 ++- VERSION | 2 +- aclocal.m4 | 1 + config.make.in | 1 + make/mudela-rules.make | 7 +- make/stepmake.make | 13 +- stepmake/aclocal.m4 | 1 + stepmake/make/stepmake.make | 15 +- stepmake/stepmake/no-builtin-rules.make | 242 ++++++++++++++++++++++++ stepmake/stepmake/texinfo-targets.make | 4 +- 11 files changed, 295 insertions(+), 21 deletions(-) create mode 100644 stepmake/stepmake/no-builtin-rules.make diff --git a/CHANGES b/CHANGES index 9025bc9c5a..7f51bc8c87 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,9 @@ +1.3.106.jcn2 +============ + +* Cross compilation and info build fixes, really cancel all builtin +rules, sigh. + 1.3.106.jcn1 ============ diff --git a/Documentation/user/GNUmakefile b/Documentation/user/GNUmakefile index b586a9a4f5..5fac94b489 100644 --- a/Documentation/user/GNUmakefile +++ b/Documentation/user/GNUmakefile @@ -29,6 +29,11 @@ dvi: $(DVI_FILES) ps: $(PS_FILES) +# Cancel default info rule +$(outdir)/%.info: $(outdir)/%.texi + +# info is now built by default via texinfo-rules +# we must build them by default, otherwise they get built during make install info: $(INFO_FILES) default: @@ -59,16 +64,21 @@ backdoc-WWW: $(outdir)/lilypond-internals/lilypond-internals.html #ugh. lily/OUT/lilypond hardcoded. # when cross-compiling, we don't have lilypond -$(outdir)/lilypond-internals.texi: - if [ -e $(depth)/$(builddir)/lily/out/lilypond ]; then \ - cd $(outdir) && ../$(depth)/$(builddir)/lily/out/lilypond ../$(src-depth)/ly/generate-documentation; \ - else \ - touch $@; \ - fi +ifneq ($(CROSS),yes) +$(outdir)/lilypond-internals.nexi $(outdir)/lilypond-internals.texi: + cd $(outdir) && ../$(depth)/$(builddir)/lily/out/lilypond ../$(src-depth)/ly/generate-documentation + -ln $(outdir)/lilypond-internals.texi $(outdir)/lilypond-internals.nexi +else +$(outdir)/lilypond-internals.nexi $(outdir)/lilypond-internals.texi: +## -cd $(outdir) && lilypond ../$(src-depth)/ly/generate-documentation +##programming error: Improbable offset for translation: setting to zero (Continuing; cross thumbs) +##programming error: Molecule::add_at_edge: adding empty molecule. (Continuing; cross thumbs) + touch $@ + touch $(outdir)/$(*F).nexi +endif # Generic rule not possible? # $(outdir)/%/%.html: $(outdir)/%.texi - $(outdir)/lilypond/lilypond.html: $(outdir)/lilypond.texi -$(MAKEINFO) --force --output=$@ --html $< # we want footers even if website builds (or is built) partly diff --git a/VERSION b/VERSION index b75925ac0d..d004ba8d7b 100644 --- a/VERSION +++ b/VERSION @@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 PATCH_LEVEL=106 -MY_PATCH_LEVEL=jcn1 +MY_PATCH_LEVEL=jcn2 # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/aclocal.m4 b/aclocal.m4 index e812c5f830..724a91b40b 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -76,6 +76,7 @@ AC_DEFUN(AC_STEPMAKE_COMPILE, [ CFLAGS="$CFLAGS $OPTIMIZE" CPPFLAGS=${CPPFLAGS:-""} + AC_SUBST(cross_compiling) AC_SUBST(CFLAGS) AC_SUBST(CPPFLAGS) AC_SUBST(LDFLAGS) diff --git a/config.make.in b/config.make.in index 0676f025c0..97b7d70045 100644 --- a/config.make.in +++ b/config.make.in @@ -9,6 +9,7 @@ USER_CXXFLAGS = @CXXFLAGS@ @CPPFLAGS@ @GUILE_CFLAGS@ USER_LDFLAGS = @LDFLAGS@ @GUILE_LDFLAGS@ CC = @CC@ +CROSS = @cross_compiling@ CXX = @CXX@ GCC = @GCC@ LD = @LD@ diff --git a/make/mudela-rules.make b/make/mudela-rules.make index 28fd1893a7..aa78b14c24 100644 --- a/make/mudela-rules.make +++ b/make/mudela-rules.make @@ -21,5 +21,10 @@ $(outdir)/%.nexi: %.tely mv $(@D)/$(*F).texi $@ $(SUBST_TEXI_DEPS) +# nfo: info from non-lily texi $(outdir)/%.info: $(outdir)/%.nexi - -$(MAKEINFO) --force --output=$@ $< + -$(MAKEINFO) --force --output=$(outdir)/$(*F).info $< + +# nfo: info from non-lily texi +#$(outdir)/%.nfo: $(outdir)/%.nexi +# -$(MAKEINFO) --force --output=$(outdir)/$(*F).info $< diff --git a/make/stepmake.make b/make/stepmake.make index d31fae0726..9cfe90e50c 100644 --- a/make/stepmake.make +++ b/make/stepmake.make @@ -2,11 +2,6 @@ include $(depth)/make/toplevel-version.make -# Don't try to outsmart us, you puny computer! -ifeq (0,${MAKELEVEL}) - MAKE:=$(MAKE) --no-builtin-rules -endif -.SUFFIXES: # Use alternate configurations alongside eachother: # @@ -63,6 +58,14 @@ stepdir = $(stepmake)/stepmake STEPMAKE_TEMPLATES := generic $(STEPMAKE_TEMPLATES) LOCALSTEPMAKE_TEMPLATES:= generic $(LOCALSTEPMAKE_TEMPLATES) +# Don't try to outsmart us, you puny computer! +# Well, UGH. This only removes builtin rules from +# subsequent $(MAKE)s, *not* from the current run! +ifeq (0,${MAKELEVEL}) + MAKE:=$(MAKE) --no-builtin-rules + include $(stepdir)/no-builtin-rules.make +endif +.SUFFIXES: all: diff --git a/stepmake/aclocal.m4 b/stepmake/aclocal.m4 index e812c5f830..724a91b40b 100644 --- a/stepmake/aclocal.m4 +++ b/stepmake/aclocal.m4 @@ -76,6 +76,7 @@ AC_DEFUN(AC_STEPMAKE_COMPILE, [ CFLAGS="$CFLAGS $OPTIMIZE" CPPFLAGS=${CPPFLAGS:-""} + AC_SUBST(cross_compiling) AC_SUBST(CFLAGS) AC_SUBST(CPPFLAGS) AC_SUBST(LDFLAGS) diff --git a/stepmake/make/stepmake.make b/stepmake/make/stepmake.make index 2834b7bc17..6e524643e0 100644 --- a/stepmake/make/stepmake.make +++ b/stepmake/make/stepmake.make @@ -2,12 +2,6 @@ include $(depth)/make/toplevel-version.make -# Don't try to outsmart us, you puny computer! -ifeq (0,${MAKELEVEL}) - MAKE:=$(MAKE) --no-builtin-rules -endif -.SUFFIXES: - # Use alternate configurations alongside eachother: # # ./configure --enable-config=debug @@ -64,6 +58,15 @@ STEPMAKE_TEMPLATES := generic $(STEPMAKE_TEMPLATES) LOCALSTEPMAKE_TEMPLATES:= generic $(LOCALSTEPMAKE_TEMPLATES) +# Don't try to outsmart us, you puny computer! +# Well, UGH. This only removes builtin rules from +# subsequent $(MAKE)s, *not* from the current run! +ifeq (0,${MAKELEVEL}) + MAKE:=$(MAKE) --no-builtin-rules + include $(stepdir)/no-builtin-rules.make +endif +.SUFFIXES: + all: -include $(addprefix $(depth)/make/,$(addsuffix -inclusions.make, $(LOCALSTEPMAKE_TEMPLATES))) diff --git a/stepmake/stepmake/no-builtin-rules.make b/stepmake/stepmake/no-builtin-rules.make new file mode 100644 index 0000000000..e8e2718eb5 --- /dev/null +++ b/stepmake/stepmake/no-builtin-rules.make @@ -0,0 +1,242 @@ +# UGH. GNU make comes with implicit rules. +# We don't want any of them, and can't force users to run +# --no-builtin-rules + +.SUFFIXES: + +#Compiling C programs +# `N.o' is made automatically from `N.c' with a command of the form +# `$(CC) -c $(CPPFLAGS) $(CFLAGS)'. + +%.o: %.c + +# Compiling C++ programs +# `N.o' is made automatically from `N.cc' or `N.C' with a command of +# the form `$(CXX) -c $(CPPFLAGS) $(CXXFLAGS)'. We encourage you to +# use the suffix `.cc' for C++ source files instead of `.C'. + +%.o: %.cc + +# Compiling Pascal programs +# `N.o' is made automatically from `N.p' with the command `$(PC) -c +# $(PFLAGS)'. + +%.o: %.p + +# Compiling Fortran and Ratfor programs +# `N.o' is made automatically from `N.r', `N.F' or `N.f' by running +# the Fortran compiler. The precise command used is as follows: + +# `.f' +# `$(FC) -c $(FFLAGS)'. + +%.o: %.f + +# `.F' +# `$(FC) -c $(FFLAGS) $(CPPFLAGS)'. + +%.o: %.F + +# `.r' +# `$(FC) -c $(FFLAGS) $(RFLAGS)'. + +%.o: %.r + +# Preprocessing Fortran and Ratfor programs +# `N.f' is made automatically from `N.r' or `N.F'. This rule runs +# just the preprocessor to convert a Ratfor or preprocessable +# Fortran program into a strict Fortran program. The precise +# command used is as follows: + +# `.F' +# `$(FC) -F $(CPPFLAGS) $(FFLAGS)'. + +%.f: %.F + +# `.r' +# `$(FC) -F $(FFLAGS) $(RFLAGS)'. + +%.f: %.r + +# Compiling Modula-2 programs +# `N.sym' is made from `N.def' with a command of the form `$(M2C) +# $(M2FLAGS) $(DEFFLAGS)'. `N.o' is made from `N.mod'; the form is: +# `$(M2C) $(M2FLAGS) $(MODFLAGS)'. + +%.sym: %.def +%.o: %.mod + +# Assembling and preprocessing assembler programs +# `N.o' is made automatically from `N.s' by running the assembler, +# `as'. The precise command is `$(AS) $(ASFLAGS)'. + +%.o: %.s + +# `N.s' is made automatically from `N.S' by running the C +# preprocessor, `cpp'. The precise command is `$(CPP) $(CPPFLAGS)'. + +%.s: %.S + +# Linking a single object file +# `N' is made automatically from `N.o' by running the linker +# (usually called `ld') via the C compiler. The precise command +# used is `$(CC) $(LDFLAGS) N.o $(LOADLIBES) $(LDLIBS)'. + +%: %.o + +# This rule does the right thing for a simple program with only one +# source file. It will also do the right thing if there are multiple +# object files (presumably coming from various other source files), +# one of which has a name matching that of the executable file. +# Thus, + +# x: y.o z.o + +# when `x.c', `y.c' and `z.c' all exist will execute: + +# cc -c x.c -o x.o +# cc -c y.c -o y.o +# cc -c z.c -o z.o +# cc x.o y.o z.o -o x +# rm -f x.o +# rm -f y.o +# rm -f z.o + +# In more complicated cases, such as when there is no object file +# whose name derives from the executable file name, you must write +# an explicit command for linking. + +# Each kind of file automatically made into `.o' object files will +# be automatically linked by using the compiler (`$(CC)', `$(FC)' or +# `$(PC)'; the C compiler `$(CC)' is used to assemble `.s' files) +# without the `-c' option. This could be done by using the `.o' +# object files as intermediates, but it is faster to do the +# compiling and linking in one step, so that's how it's done. + +# Yacc for C programs +# `N.c' is made automatically from `N.y' by running Yacc with the +# command `$(YACC) $(YFLAGS)'. + +%.c: %.y + +# Lex for C programs +# `N.c' is made automatically from `N.l' by by running Lex. The +# actual command is `$(LEX) $(LFLAGS)'. + +%.c: %.l + +# Lex for Ratfor programs +# `N.r' is made automatically from `N.l' by by running Lex. The +# actual command is `$(LEX) $(LFLAGS)'. + +%.r: %.l + +# The convention of using the same suffix `.l' for all Lex files +# regardless of whether they produce C code or Ratfor code makes it +# impossible for `make' to determine automatically which of the two +# languages you are using in any particular case. If `make' is +# called upon to remake an object file from a `.l' file, it must +# guess which compiler to use. It will guess the C compiler, because +# that is more common. If you are using Ratfor, make sure `make' +# knows this by mentioning `N.r' in the makefile. Or, if you are +# using Ratfor exclusively, with no C files, remove `.c' from the +# list of implicit rule suffixes with: + +# .SUFFIXES: +# .SUFFIXES: .o .r .f .l ... + +# Making Lint Libraries from C, Yacc, or Lex programs +# `N.ln' is made from `N.c' by running `lint'. The precise command +# is `$(LINT) $(LINTFLAGS) $(CPPFLAGS) -i'. The same command is +# used on the C code produced from `N.y' or `N.l'. + +%.ln: %.c + +# TeX and Web +# `N.dvi' is made from `N.tex' with the command `$(TEX)'. `N.tex' +# is made from `N.web' with `$(WEAVE)', or from `N.w' (and from +# `N.ch' if it exists or can be made) with `$(CWEAVE)'. `N.p' is +# made from `N.web' with `$(TANGLE)' and `N.c' is made from `N.w' +# (and from `N.ch' if it exists or can be made) with `$(CTANGLE)'. + +%.dvi: %.tex +%.tex: %.web +%.tex: %.w +%.tex: %.ch +%.p: %.web +%.c: %.w +%.w: %.ch + +# Texinfo and Info +# `N.dvi' is made from `N.texinfo', `N.texi', or `N.txinfo', with +# the command `$(TEXI2DVI) $(TEXI2DVI_FLAGS)'. `N.info' is made from +# `N.texinfo', `N.texi', or `N.txinfo', with the command +# `$(MAKEINFO) $(MAKEINFO_FLAGS)'. + +%.dvi: %.texinfo +%.dvi: %.texi +%.dvi: %.txinfo + +%.info: %.texinfo +%.info: %.texi +%.info: %.txinfo + +# RCS +# Any file `N' is extracted if necessary from an RCS file named +# either `N,v' or `RCS/N,v'. The precise command used is +# `$(CO) $(COFLAGS)'. `N' will not be extracted from RCS if it +# already exists, even if the RCS file is newer. The rules for RCS +# are terminal (*note Match-Anything Pattern Rules: Match-Anything +# Rules.), so RCS files cannot be generated from another source; +# they must actually exist. + +%: %,v +%: RCS/%,v + +# SCCS +# Any file `N' is extracted if necessary from an SCCS file named +# either `s.N' or `SCCS/s.N'. The precise command used is +# `$(GET) $(GFLAGS)'. The rules for SCCS are terminal (*note +# Match-Anything Pattern Rules: Match-Anything Rules.), so SCCS +# files cannot be generated from another source; they must actually +# exist. + +%: s.% +%: SCCS/s.% + +# For the benefit of SCCS, a file `N' is copied from `N.sh' and made +# executable (by everyone). This is for shell scripts that are +# checked into SCCS. Since RCS preserves the execution permission +# of a file, you do not need to use this feature with RCS. + +%: %.sh + +# We recommend that you avoid using of SCCS. RCS is widely held to +# be superior, and is also free. By choosing free software in place +# of comparable (or inferior) proprietary software, you support the +# free software movement. + +# Usually, you want to change only the variables listed in the table +# above, which are documented in the following section. + +# However, the commands in built-in implicit rules actually use +# variables such as `COMPILE.c', `LINK.p', and `PREPROCESS.S', whose +# values contain the commands listed above. + +# `make' follows the convention that the rule to compile a `.X' source +# file uses the variable `COMPILE.X'. Similarly, the rule to produce an +# executable from a `.X' file uses `LINK.X'; and the rule to preprocess a +# `.X' file uses `PREPROCESS.X'. + +# Every rule that produces an object file uses the variable +# `OUTPUT_OPTION'. `make' defines this variable either to contain `-o +# $@', or to be empty, depending on a compile-time option. You need the +# `-o' option to ensure that the output goes into the right file when the +# source file is in a different directory, as when using `VPATH' (*note +# Directory Search::). However, compilers on some systems do not accept +# a `-o' switch for object files. If you use such a system, and use +# `VPATH', some compilations will put their output in the wrong place. A +# possible workaround for this problem is to give `OUTPUT_OPTION' the +# value `; mv $*.o $@'. + + diff --git a/stepmake/stepmake/texinfo-targets.make b/stepmake/stepmake/texinfo-targets.make index ca47789ef0..1e40d936cf 100644 --- a/stepmake/stepmake/texinfo-targets.make +++ b/stepmake/stepmake/texinfo-targets.make @@ -1,5 +1,7 @@ -# empty + +default: $(INFO_FILES) local-WWW: $(addprefix $(outdir)/,$(TEXI_FILES:.texi=.html)) local-doc: $(OUTTXT_FILES) + -- 2.39.2