From 20253c448b08b1d56779f74204f0a51768a88e6b Mon Sep 17 00:00:00 2001 From: hanwen Date: Tue, 19 Jul 2005 12:57:33 +0000 Subject: [PATCH] * configure.in (reloc_b): add --enable-static-gxx to statically link to libstdc++ * lily/GNUmakefile (static-gxx-libs): new target static-gxx-libs. Create link to libstdc++.a * lily/new-lyric-combine-music-iterator.cc: rename to Lyric_combine_music_iterator * lily/lyric-combine-music-iterator.cc (Old_lyric_combine_music_iterator): rename to Old_lyric_combine_music_iterator --- ChangeLog | 11 +++++++ Documentation/user/advanced-notation.itely | 4 +-- config.make.in | 2 ++ configure.in | 8 ++++- input/typography-demo.ly | 2 +- lily/GNUmakefile | 17 +++++++++- lily/lyric-combine-music-iterator.cc | 38 +++++++++++----------- lily/melisma-translator.cc | 2 +- lily/new-lyric-combine-music-iterator.cc | 34 +++++++++---------- lily/performer-group-performer.cc | 2 -- lily/recording-group-engraver.cc | 2 -- lily/score-engraver.cc | 2 -- make/lilypond.fedora.spec.in | 3 +- scm/define-music-types.scm | 4 +-- 14 files changed, 80 insertions(+), 51 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7cd9ac0720..a6fe2bb27f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,16 @@ 2005-07-19 Han-Wen Nienhuys + * configure.in (reloc_b): add --enable-static-gxx to statically + link to libstdc++ + + * lily/GNUmakefile (static-gxx-libs): new target + static-gxx-libs. Create link to libstdc++.a + + * lily/new-lyric-combine-music-iterator.cc: rename to Lyric_combine_music_iterator + + * lily/lyric-combine-music-iterator.cc + (Old_lyric_combine_music_iterator): rename to Old_lyric_combine_music_iterator + * lily/*-engraver.cc (various): remove double use of PRECOMPUTED_VIRTUAL function: only use start_translation_timestep() and stop_translation_timestep(), not diff --git a/Documentation/user/advanced-notation.itely b/Documentation/user/advanced-notation.itely index 71d3f10797..ee6b3ae790 100644 --- a/Documentation/user/advanced-notation.itely +++ b/Documentation/user/advanced-notation.itely @@ -1354,7 +1354,7 @@ Cue notes have smaller font sizes. when the original part takes over again, this should be marked with the name of the original instrument. - @c really? Are you sure about that last point? I'll check after 3.0 -gp +@c really? Are you sure about that last point? I'll check after 3.0 -gp @c Yes, this is good practice. Otherwise, the start of the original @c part can only be seen from the font size. This is not good enough @@ -1364,7 +1364,7 @@ Cue notes have smaller font sizes. @c -hwn - any other changes introduced by the cued part should also be +Any other changes introduced by the cued part should also be undone. For example, if the cued instrument plays in a different clef, the original clef should be stated once again. diff --git a/config.make.in b/config.make.in index 32fd87e390..004c597be6 100644 --- a/config.make.in +++ b/config.make.in @@ -111,3 +111,5 @@ WINDRES = @WINDRES@ YACC = @YACC@ ZIP = @ZIP@ FLEXLEXER_PATH = @FLEXLEXER_PATH@ + +LINK_GXX_STATICALLY = @LINK_GXX_STATICALLY@ diff --git a/configure.in b/configure.in index 1a459b9699..e8766fc8fc 100644 --- a/configure.in +++ b/configure.in @@ -32,6 +32,12 @@ AC_ARG_ENABLE(relocation, [ --enable-relocation compile with dynamic relocation. Default: off], [reloc_b=$enableval]) +AC_SUBST(LINK_GXX_STATICALLY) +LINK_GXX_STATICALLY=no +AC_ARG_ENABLE(static-gxx, + [ --enable-static-gxx link libstdc++.a statically. Default: off], + [LINK_GXX_STATICALLY=$enableval]) + # must come before any header checks STEPMAKE_COMPILE @@ -103,7 +109,7 @@ STEPMAKE_PERL(OPTIONAL) # New makeinfo for multi-page website docs Simply always require new # makeinfo should avoid bug reports; if people want to build lily # without the docs, they can find this comment and use an older -# makeinfo -- but hopefully won't report makeinfo problems. +# makeinfo--but hopefully won't report makeinfo problems. STEPMAKE_PROGS(MAKEINFO, makeinfo, REQUIRED, 4.7) if test "$optimise_b" = yes; then diff --git a/input/typography-demo.ly b/input/typography-demo.ly index d0ad8ebc61..83d4c11acf 100644 --- a/input/typography-demo.ly +++ b/input/typography-demo.ly @@ -127,7 +127,7 @@ pianoLH = \relative c'' \repeat volta 2\new Voice { \context Staff #(set-accidental-style 'modern) \melody >> \lyricsto "singer" \new Lyrics \firstVerse -% \lyricsto "singer" \new Lyrics \secondVerse + \lyricsto "singer" \new Lyrics \secondVerse \new PianoStaff << \set PianoStaff.instrument = \markup { \bold diff --git a/lily/GNUmakefile b/lily/GNUmakefile index 9d34a9b3f0..0dadf1f71f 100644 --- a/lily/GNUmakefile +++ b/lily/GNUmakefile @@ -6,8 +6,11 @@ SUBDIRS = include MODULE_LIBS= $(depth)/flower $(depth)/kpath-guile MODULE_INCLUDES= $(depth)/flower/include + +# need this to convert between function pointers and member function pointers. MODULE_CXXFLAGS= -Wno-pmf-conversions + HELP2MAN_EXECS = lilypond STEPMAKE_TEMPLATES=c c++ executable po help2man @@ -16,8 +19,12 @@ OUT_DIST_FILES=$(addprefix $(outdir)/,parser.cc parser.hh ) include $(depth)/make/stepmake.make ifeq ($(HAVE_LIBKPATHSEA_SO),no) -MODULE_LDFLAGS+= $(KPATHSEA_LIBS) +MODULE_LDFLAGS += $(KPATHSEA_LIBS) endif +ifeq ($(LINK_GXX_STATICALLY),yes) +MODULE_LDFLAGS += -L$(outdir) -static-libgcc +endif + # for profiling, link guile statically: @@ -46,6 +53,14 @@ ETAGS_FLAGS += --regex='{c++}/^LY_DEFINE *([^"]*"\([^"]+\)"/\1/' default: + +$(outdir)/libstdc++.a: + ln -s `$(CXX) -print-file-name=libstdc++.a` $(outdir)/ + +ifeq ($(LINK_GXX_STATICALLY),yes) +$(outdir)/lilypond: $(outdir)/libstdc++.a +endif + # force these: Make can't know these have to be generated in advance $(outdir)/lily-parser.o: $(outdir)/parser.hh $(outdir)/lily-lexer.o: $(outdir)/parser.hh $(outdir)/FlexLexer.h diff --git a/lily/lyric-combine-music-iterator.cc b/lily/lyric-combine-music-iterator.cc index 91ec3ab04f..9d0e023722 100644 --- a/lily/lyric-combine-music-iterator.cc +++ b/lily/lyric-combine-music-iterator.cc @@ -1,5 +1,5 @@ /* - lyric-combine-music-iterator.cc -- implement Lyric_combine_music_iterator + lyric-combine-music-iterator.cc -- implement Old_lyric_combine_music_iterator source file of the GNU LilyPond music typesetter @@ -12,11 +12,11 @@ #include "grob.hh" #include "music-iterator.hh" -class Lyric_combine_music_iterator : public Music_iterator +class Old_lyric_combine_music_iterator : public Music_iterator { public: - Lyric_combine_music_iterator (); - Lyric_combine_music_iterator (Lyric_combine_music_iterator const &src); + Old_lyric_combine_music_iterator (); + Old_lyric_combine_music_iterator (Old_lyric_combine_music_iterator const &src); DECLARE_SCHEME_CALLBACK (constructor, ()); protected: virtual void construct_children (); @@ -29,7 +29,7 @@ protected: virtual void derived_mark () const; virtual void derived_substitute (Context *, Context *); private: - bool get_busy_status ()const; + bool get_busy_status () const; bool melisma_busy (); Music *get_combine_lyrics () const; Music *get_combine_music () const; @@ -57,7 +57,7 @@ melisma_busy (Context *tr) Music *busy_req; Music *melisma_playing_req; -Lyric_combine_music_iterator::Lyric_combine_music_iterator () +Old_lyric_combine_music_iterator::Old_lyric_combine_music_iterator () { music_iter_ = 0; lyric_iter_ = 0; @@ -72,20 +72,20 @@ Lyric_combine_music_iterator::Lyric_combine_music_iterator () } Moment -Lyric_combine_music_iterator::pending_moment () const +Old_lyric_combine_music_iterator::pending_moment () const { Moment musnext = music_iter_->pending_moment (); return musnext; } bool -Lyric_combine_music_iterator::ok () const +Old_lyric_combine_music_iterator::ok () const { return music_iter_->ok (); } void -Lyric_combine_music_iterator::derived_mark ()const +Old_lyric_combine_music_iterator::derived_mark ()const { if (music_iter_) scm_gc_mark (music_iter_->self_scm ()); @@ -94,7 +94,7 @@ Lyric_combine_music_iterator::derived_mark ()const } void -Lyric_combine_music_iterator::derived_substitute (Context *f, Context *t) +Old_lyric_combine_music_iterator::derived_substitute (Context *f, Context *t) { if (music_iter_) music_iter_->substitute_outlet (f, t); @@ -103,7 +103,7 @@ Lyric_combine_music_iterator::derived_substitute (Context *f, Context *t) } Music * -Lyric_combine_music_iterator::get_combine_music () const +Old_lyric_combine_music_iterator::get_combine_music () const { SCM l = get_music ()->get_property ("elements"); if (!scm_is_pair (l)) @@ -112,7 +112,7 @@ Lyric_combine_music_iterator::get_combine_music () const } Music * -Lyric_combine_music_iterator::get_combine_lyrics () const +Old_lyric_combine_music_iterator::get_combine_lyrics () const { SCM l = get_music ()->get_property ("elements"); if (!scm_is_pair (l)) @@ -124,14 +124,14 @@ Lyric_combine_music_iterator::get_combine_lyrics () const } void -Lyric_combine_music_iterator::construct_children () +Old_lyric_combine_music_iterator::construct_children () { music_iter_ = unsmob_iterator (get_iterator (get_combine_music ())); lyric_iter_ = unsmob_iterator (get_iterator (get_combine_lyrics ())); } bool -Lyric_combine_music_iterator::get_busy_status () const +Old_lyric_combine_music_iterator::get_busy_status () const { /* We have to use both the event and the busyGrobs queue. The @@ -161,7 +161,7 @@ Lyric_combine_music_iterator::get_busy_status () const } bool -Lyric_combine_music_iterator::melisma_busy () +Old_lyric_combine_music_iterator::melisma_busy () { /* We cannot read the property, since music_iter_->get_outlet () might not be the context that sets the melisma properties, but rather a @@ -170,7 +170,7 @@ Lyric_combine_music_iterator::melisma_busy () } void -Lyric_combine_music_iterator::process (Moment m) +Old_lyric_combine_music_iterator::process (Moment m) { Moment my_next = music_iter_->pending_moment (); if (my_next > m) @@ -186,7 +186,7 @@ Lyric_combine_music_iterator::process (Moment m) } void -Lyric_combine_music_iterator::do_quit () +Old_lyric_combine_music_iterator::do_quit () { if (music_iter_) music_iter_->quit (); @@ -195,7 +195,7 @@ Lyric_combine_music_iterator::do_quit () } Music_iterator * -Lyric_combine_music_iterator::try_music_in_children (Music *m) const +Old_lyric_combine_music_iterator::try_music_in_children (Music *m) const { Music_iterator *i = music_iter_->try_music (m); if (i) @@ -204,4 +204,4 @@ Lyric_combine_music_iterator::try_music_in_children (Music *m) const return lyric_iter_->try_music (m); } -IMPLEMENT_CTOR_CALLBACK (Lyric_combine_music_iterator); +IMPLEMENT_CTOR_CALLBACK (Old_lyric_combine_music_iterator); diff --git a/lily/melisma-translator.cc b/lily/melisma-translator.cc index 1854911489..97a51df670 100644 --- a/lily/melisma-translator.cc +++ b/lily/melisma-translator.cc @@ -9,6 +9,7 @@ #include "engraver.hh" #include "grob.hh" #include "context.hh" +#include "translator.icc" /** Signal existence of melismas. @@ -65,7 +66,6 @@ Melisma_translator::Melisma_translator () event_ = 0; } -#include "translator.icc" ADD_TRANSLATOR (Melisma_translator, /* descr */ "This translator collects melisma information about ties, beams, and user settings (@code{melismaBusy}, and signals it to the @code{\addlyrics} code. ", diff --git a/lily/new-lyric-combine-music-iterator.cc b/lily/new-lyric-combine-music-iterator.cc index 49e496ff70..37f5d67bd8 100644 --- a/lily/new-lyric-combine-music-iterator.cc +++ b/lily/new-lyric-combine-music-iterator.cc @@ -1,5 +1,5 @@ /* - new-lyric-combine-iterator.cc -- implement New_lyric_combine_music_iterator + new-lyric-combine-iterator.cc -- implement Lyric_combine_music_iterator source file of the GNU LilyPond music typesetter @@ -12,11 +12,11 @@ #include "music-iterator.hh" #include "input.hh" -class New_lyric_combine_music_iterator : public Music_iterator +class Lyric_combine_music_iterator : public Music_iterator { public: - New_lyric_combine_music_iterator (); - New_lyric_combine_music_iterator (New_lyric_combine_music_iterator const &src); + Lyric_combine_music_iterator (); + Lyric_combine_music_iterator (Lyric_combine_music_iterator const &src); DECLARE_SCHEME_CALLBACK (constructor, ()); protected: virtual void construct_children (); @@ -48,7 +48,7 @@ static Music *busy_ev; static Music *start_ev; static Music *melisma_playing_ev; -New_lyric_combine_music_iterator::New_lyric_combine_music_iterator () +Lyric_combine_music_iterator::Lyric_combine_music_iterator () { music_found_ = false; made_association_ = false; @@ -71,7 +71,7 @@ New_lyric_combine_music_iterator::New_lyric_combine_music_iterator () } bool -New_lyric_combine_music_iterator::start_new_syllable () +Lyric_combine_music_iterator::start_new_syllable () { bool b = music_context_->try_music (busy_ev); @@ -92,7 +92,7 @@ New_lyric_combine_music_iterator::start_new_syllable () } Moment -New_lyric_combine_music_iterator::pending_moment () const +Lyric_combine_music_iterator::pending_moment () const { Moment m; @@ -102,19 +102,19 @@ New_lyric_combine_music_iterator::pending_moment () const } bool -New_lyric_combine_music_iterator::run_always () const +Lyric_combine_music_iterator::run_always () const { return true; } bool -New_lyric_combine_music_iterator::ok () const +Lyric_combine_music_iterator::ok () const { return lyric_iter_ && lyric_iter_->ok (); } void -New_lyric_combine_music_iterator::derived_mark ()const +Lyric_combine_music_iterator::derived_mark ()const { if (lyric_iter_) scm_gc_mark (lyric_iter_->self_scm ()); @@ -125,7 +125,7 @@ New_lyric_combine_music_iterator::derived_mark ()const } void -New_lyric_combine_music_iterator::derived_substitute (Context *f, Context *t) +Lyric_combine_music_iterator::derived_substitute (Context *f, Context *t) { if (lyric_iter_) lyric_iter_->substitute_outlet (f, t); @@ -136,7 +136,7 @@ New_lyric_combine_music_iterator::derived_substitute (Context *f, Context *t) } void -New_lyric_combine_music_iterator::construct_children () +Lyric_combine_music_iterator::construct_children () { Music *m = unsmob_music (get_music ()->get_property ("element")); lyric_iter_ = unsmob_iterator (get_iterator (m)); @@ -157,7 +157,7 @@ New_lyric_combine_music_iterator::construct_children () } void -New_lyric_combine_music_iterator::find_voice () +Lyric_combine_music_iterator::find_voice () { SCM voice_name = lyricsto_voice_name_; SCM running = lyrics_context_ ? lyrics_context_->get_property ("associatedVoice") : SCM_EOL; @@ -199,7 +199,7 @@ New_lyric_combine_music_iterator::find_voice () } void -New_lyric_combine_music_iterator::process (Moment) +Lyric_combine_music_iterator::process (Moment) { find_voice (); if (!music_context_) @@ -228,7 +228,7 @@ New_lyric_combine_music_iterator::process (Moment) } void -New_lyric_combine_music_iterator::do_quit () +Lyric_combine_music_iterator::do_quit () { if (!music_found_) { @@ -247,9 +247,9 @@ New_lyric_combine_music_iterator::do_quit () } Music_iterator * -New_lyric_combine_music_iterator::try_music_in_children (Music *m) const +Lyric_combine_music_iterator::try_music_in_children (Music *m) const { return lyric_iter_->try_music (m); } -IMPLEMENT_CTOR_CALLBACK (New_lyric_combine_music_iterator); +IMPLEMENT_CTOR_CALLBACK (Lyric_combine_music_iterator); diff --git a/lily/performer-group-performer.cc b/lily/performer-group-performer.cc index 098def5c97..8c24bbb996 100644 --- a/lily/performer-group-performer.cc +++ b/lily/performer-group-performer.cc @@ -13,8 +13,6 @@ #include "audio-element.hh" #include "warn.hh" -#include "translator.icc" - ADD_TRANSLATOR_GROUP (Performer_group_performer, /* descr */ "", /* creats*/ "", diff --git a/lily/recording-group-engraver.cc b/lily/recording-group-engraver.cc index 971c06aca6..364494e927 100644 --- a/lily/recording-group-engraver.cc +++ b/lily/recording-group-engraver.cc @@ -72,8 +72,6 @@ Recording_group_engraver::fetch_precomputable_methods (Translator_group_void_met ptrs[STOP_TRANSLATION_TIMESTEP] = &recording_engraver; } -#include "translator.icc" - ADD_TRANSLATOR_GROUP (Recording_group_engraver, "Engraver_group_engraver that records all music events " "for this context. Calls the procedure " diff --git a/lily/score-engraver.cc b/lily/score-engraver.cc index 658b44ac13..5fbacd0cb2 100644 --- a/lily/score-engraver.cc +++ b/lily/score-engraver.cc @@ -164,8 +164,6 @@ Score_engraver::try_music (Music *m) return false; } -#include "translator.icc" - ADD_TRANSLATOR_GROUP (Score_engraver, /* descr */ "Top level engraver. Takes care of generating columns and the complete system (ie. System) " "\n\n " diff --git a/make/lilypond.fedora.spec.in b/make/lilypond.fedora.spec.in index 3091df8f60..6efcdee361 100644 --- a/make/lilypond.fedora.spec.in +++ b/make/lilypond.fedora.spec.in @@ -52,7 +52,8 @@ Documentation and example files of LilyPond. An index is available at # In fact, do not take out the spaces between % and { in the above comment, # because RPM will gladly do a substitution anyway. -./configure --without-kpathsea --disable-checking --prefix=%{_prefix} --enable-optimising +# compile with static libstdc++ for better platform portability. +./configure --enable-static-gxx --without-kpathsea --disable-checking --prefix=%{_prefix} --enable-optimising make all diff --git a/scm/define-music-types.scm b/scm/define-music-types.scm index 37364c85ac..f7918aaa58 100644 --- a/scm/define-music-types.scm +++ b/scm/define-music-types.scm @@ -239,7 +239,7 @@ Syntax @var{\\oldaddlyrics }@var{music} @var{lyrics}.") (types . (general-music lyric-combine-music)) (length-callback . ,Lyric_combine_music::length_callback) (start-callback . ,Music_sequence::first_start_callback) - (iterator-ctor . ,Lyric_combine_music_iterator::constructor) + (iterator-ctor . ,Old_lyric_combine_music_iterator::constructor) )) (LyricCombineMusic @@ -249,7 +249,7 @@ Syntax @var{\\oldaddlyrics }@var{music} @var{lyrics}.") Syntax @var{\\lyricsto }@var{voicename} @var{lyrics}.") (length . ,(ly:make-moment 0 1)) (types . (general-music lyric-combine-music)) - (iterator-ctor . ,New_lyric_combine_music_iterator::constructor) + (iterator-ctor . ,Lyric_combine_music_iterator::constructor) )) (LyricEvent -- 2.39.5