TOPLEVEL_MAJOR_VERSION = 0
TOPLEVEL_MINOR_VERSION = 0
-TOPLEVEL_PATCH_LEVEL = 46
+TOPLEVEL_PATCH_LEVEL = 47
# use to send patches, always empty for released version:
# include separator: ".postfix", "-pl" makes rpm barf
-TOPLEVEL_MY_PATCH_LEVEL = .jcn1
+TOPLEVEL_MY_PATCH_LEVEL =
Inline definition files always have the file name extension ".icc".
-Template include files always have the file name extension ".tcc".
-
=head2 INDENTATION
=head2 Disadvantages
-=over 4
+=over 5
=item *
=head2 Proposal
-=over 4
+=over 5
=item *
=head2 Types
-=over 4
+=over 5
=item C<byte>
The following types modify the meaning of the prefix.
These are precede the prefixes:
-=over 4
+=over 5
=item C<a>
=back
-=over 4
+=over 5
=item C<loop_i>
This will install the following files:
/usr/local/man/man1/lilypond.1
+ /usr/local/lib/libflower.{so,a}
/usr/local/bin/lilypond
/usr/local/bin/mi2mu
/usr/local/share/lilypond/*
other options include:
+ --enable-shared
--enable-printing
--enable-optimise
--enable-profiling
#
-OUTPODFILES = $(patsubst %,$(outdir)/%,$(PODFILES))
+OUTPODFILES = $(addprefix $(outdir)/,$(PODFILES))
TEXTFILES = $(OUTPODFILES:.pod=.text)
GROFFFILES = $(OUTPODFILES:.pod=.1)
HTMLFILES = $(OUTPODFILES:.pod=.html)
#
default: do-doc
-
+ echo $(TEXTFILES) $(OUTPODFILES) $(PODFILES)
do-doc: $(TEXTFILES)
-html: $(pod)
- pod2html
+html: $(HTMLFILES)
htmldist: html
./$(lily_bindir)/make_website
#
localclean:
- rm -f $(TEXTFILES) $(HTMLFILES) $(GROFFFILES)
+ rm -f $(TEXTFILES) $(HTMLFILES) $(GROFFFILES) $(HTMLFILES)
localinstall: $(outdir)/lilypond.1 $(outdir)/mudela.5
$(INSTALL) -d $(mandir)/man5
tested LilyPond features.
copyright info
+Most music distributed with LilyPond was composed a long time ago, and
+do not have copyrights. Any exceptions are mentioned here.
+
=head2 F<cadenza.ly>
A cadenza to Mozart Horn concerto no. 3.
=head2 F<error.ly>
-Error messages, context errors.
+Features: Error messages, context errors.
=head2 F<fugue1.midi.ly>
Some questions that have been answered before.
+=head2 language
+
Q: I can type
<a c> <e g>
to generate slurs between the chords?
-A L1: When you type
+A: When you type
<a c> <e g>
>
-Q L2: Why are [] around the notes, and () inbetween?
+Q: Why are [] around the notes, and () inbetween?
-A L2: [] designate beams, a note can only be in one beam at the same
+A: [] designate beams, a note can only be in one beam at the same
time. () is a slur, which connects notes. You need to be able to
specify
a()a()a
-Q L3: Why shouldn't I put all commands (\clef, \meter) inside the music?
+Q: Why shouldn't I put all commands (\clef, \meter) inside the music?
-A L3: You should do what you like, but at some time we will enable
+A: You should do what you like, but at some time we will enable
quoting of music ("Stichnoten"). Besides if you are going to type an
orchestral score, then you'd probably want to enter most of the meter,
repeat commands only once.
-=head2 MISCELLANEOUS
+=head2 Miscellaneous
-Q M1: Why GPL?
+Q: Why GPL?
-A M1: Yes.
+A: Yes.
-Q M2: Could you implement feature XXXX? It is really easy, just extend
+Q: Could you implement feature XXXX? It is really easy, just extend
the syntax to allow YYYY!
-A M2: If it is reasonable, I'll add XXXX to the TODO list. In general
+A: If it is reasonable, I'll add XXXX to the TODO list. In general
finding a cute syntax (such as YYYY) isn't very hard. The complicated
issue how to adapt the internals to do XXXX. The parser is really a
simple front end to the complicated internals.
-Q M3: Why do I need g++ >= 2.7?
+Q: Why do I need g++ >= 2.7?
-A M3: By using g++ LilyPond is portable to all platforms which support
+A: By using g++ LilyPond is portable to all platforms which support
g++ (there are quite a few). Not having to support other compilers
saves us a I<lot> of trouble. LilyPond and FlowerLib use:
=back
+=head2 Running
+
+Q: I get
+
+ can't load library 'libflower.so'
+
+A: You are using the dynamically compiled Flower library. Please set
+LD_LIBRARY_PATH to a directory containing F<libflower.so>
+
=head2 DOZE
-Q D1: I want a DOS/NT/W95 port.
+Q: I want a DOS/NT/W95 port.
-A D1.0: Reconsider. Try Linux. It's fun!
+A.0: Reconsider. Try Linux. It's fun!
-A D1.1: Currently (patchlevel 27), LilyPond (and flowerLib) compiles, links
+A.1: Currently (patchlevel 27), LilyPond (and flowerLib) compiles, links
and runs on windhoos-nt, using the cygnus gnu port (release b17.1).
I (JCN) only had to make a minor workaround for missing library calls.
Have a look at http://www.cygnus.com/gnu-win32. To make LilyPond type
C<make $OSTYPE>. (I am not promising to maintain this platform, it is just
that when having to use doze, i-m sometimes too lazy to reboot.)
-A D1.2: I haven't had time to find a GCC crosscompiler (I<with> g++ and
+A.2: I haven't had time to find a GCC crosscompiler (I<with> g++ and
libg++, mind you) to DOS/win (in rpm, please :).
-Q D2: I-m dozed enough to run the (sometimes bit stale) .exe-s you distribute.
+Q: I-m dozed enough to run the (sometimes bit stale) .exe-s you distribute.
Why do i need cygwin.dll?
-A D2: It-s all in this cut-n-paste:
+A: It-s all in this cut-n-paste:
Minimalist GNU-Win32 Readme
version 0.1.3
-25/Mar/97 LilyPond 0.0.46 1
+3/Apr/97 LilyPond 0.0.47 1
/usr/local/man/man1/lilypond.1
+ /usr/local/lib/libflower.{so,a}
/usr/local/bin/lilypond
/usr/local/bin/mi2mu
/usr/local/share/lilypond/*
other options include:
+ --enable-shared
--enable-printing
--enable-optimise
--enable-profiling
+\bo A fast computer (a full page of music typically takes 1
minute on my 486/66, using the -\b-\b-\b--\b-\b-\b-e\be\be\ben\bn\bn\bna\ba\ba\bab\bb\bb\bbl\bl\bl\ble\be\be\be-\b-\b-\b-c\bc\bc\bch\bh\bh\bhe\be\be\bec\bc\bc\bck\bk\bk\bki\bi\bi\bin\bn\bn\bng\bg\bg\bg
- compile. It's lot slower than most MusiXTeX
- preprocessors)
-25/Mar/97 LilyPond 0.0.46 2
+3/Apr/97 LilyPond 0.0.47 2
INSTALL(1) LilyPond documentation INSTALL(1)
+ compile. It's lot slower than most MusiXTeX
+ preprocessors)
+
+\bo TeX
+\bo The MusixTeX fonts. (I use those found in MusixTeX T.59)
-
-
-
-25/Mar/97 LilyPond 0.0.46 3
+3/Apr/97 LilyPond 0.0.47 3
-pl 46.jcn1
-Bugfix
- - reincluded {interval,pcursor,plist}.tcc
- - renamed Interval::elt_q to elt_b, invoking of empty to empty_b
- - readded second (0) arg to warning function (only lily exports
- a warning(String) function)
- - fixed dist make/Files.make
+pl 47
+ - dynamic flowerlib
+ - Input mods: now use Source_file iso Sources
+ - makefile lib deps restructured
+ - make_website now produces in out/
pl 46
- examples.pod
before 0.1
- * update 20 pt table
-
- * remove spurious/outdated comments in .ly, debug .ly
+ * fix mi2mu
- * pushgroup, popgroup.
+ * update 20 pt table
* decent TeX page layout
* bugreport to doc++ devel: struct not in class hier; public
virtual baseclasses
+ * rpm package buildroot
+
* indentable stream for TeX stream, lily stream, Dstream.
* key transposition
}
local $base="lilypond/";
-local @examples=("wohltemperirt" ,"standchen", "scsii-menuetto");
+local @examples=("wohltemperirt" ,"standchen", "scsii-menuetto", "rhythm", "martien");
#mkdir "lilypond";
sub
gen_html
{
- print "generating HTML";
- foreach $a (<*.pod>) {
- $f = $a;
- $f =~ s/.pod/.html/;
-
- system "pod2html $a" if ( ! -f $f ) ;
- }
+ print "generating HTML\n";
+ system "make -kC .. html";
}
sub
gen_examples
{
- print "generating examples: ";
+ print "generating examples: \n";
foreach $a (@examples) {
- print "$a\n";
$texfile="test";
$tex = "tex $texfile";
- if ($a eq "standchen" || $a eq "scsii-menuetto") {
- $tex = "latex input/$a";
+ if ($a eq "standchen" || $a eq "scsii-menuetto" || $a eq "martien") {
+ $tex = "latex $a";
$texfile = "$a";
}
+
if ( ! -f "$a.ly.txt" ) {
- system "ln ../input/$a.ly ./$a.ly.txt";
+ system "ln $depth/input/$a.ly ./$a.ly.txt";
}
if ( ! -f "$a.ps.gz" ) {
- system "cd ..; lilypond input/$a;$tex;".
+ system "lilypond $a;$tex;".
"dvips -o $a.ps $texfile;";
+
}
# generate the pixmap at twice the size, then rescale (for antialiasing)
if ( ! -f "$a.gif" ) {
- system "mv ../$a.ps $a.ps; ".
- "mv ../lelie.midi ../$a.midi $a.midi; ".
- "gs -q -sDEVICE=ppmraw -sOutputFile=- -r200 -dNOPAUSE $a.ps -c quit |pnmscale 0.5| ppmtogif > $a.gif";
+ system "mv lelie.midi $a.midi; ";
+ system "gs -q -sDEVICE=ppmraw -sOutputFile=- -r200 -dNOPAUSE $a.ps -c quit |pnmscale 0.5| ppmtogif > $a.gif";
system "gzip $a.ps";
}
}
sub
gen_list
{
+ print "generating HTML list\n";
open HTMLLIST, ">example_output.html";
print HTMLLIST "<title>LilyPond examples</title>\n";
foreach $a (@examples) {
$name=$a;
print HTMLLIST "<h1>example file: $name</h1>\n<XMP>\n";
- $cmd= "head ../input/$a.ly | grep \^% \| sed \"s/^%/ /\"";
+ $cmd= "head $depth/input/$a.ly | grep \^% \| sed \"s/^%/ /\"";
$desc = `$cmd`;
print HTMLLIST "$desc\n</XMP>";
<li><a href=$midif>The output (MIDI)</a>
</ul>";
}
+ close HTMLLIST;
}
sub
copy_files
{
- print `ln -s ../out ./docxx` if ( ! -x "docxx" ) ;
- system "cp ../TODO ./TODO.txt";
- system "cp ../NEWS ./NEWS.txt";
+ print "copying files\n";
+ print `ln -s $depth/out ./docxx` if ( ! -x "docxx" ) ;
+ system "cp $depth/TODO ./TODO.txt";
+ system "cp $depth/NEWS ./NEWS.txt";
+ system "cp ../lelie*gif .";
}
sub
do_tar
{
- system " tar hcf website.tar *.html *.gif lelie_logo.png *.ps.gz *.ly.txt *.midi docxx/*;" .
- "gzip -f9 website.tar;" if ( ! -f "website.tar" ) ;
+ print "tarring.\n";
+ system " tar vhcf website.tar *.html *.gif *.ps.gz *.ly.txt *.midi docxx/*;";
+system "gzip -f9 website.tar;";
}
+$depth = "../../";
+$ENV{"TEXINPUTS"} .= ":$depth/input/:";
+$ENV{"LILYINCLUDE"} = "$depth/input/";
+chdir ("out");
gen_html;
gen_examples;
gen_list;
# rgu
sed 's/TOPLEVEL_//g' < .version > lily/.version
(cd lily; CXX="$ac_cv_prog_CXX" ../bin/make_version > out/version.hh
-)
- (cd flower;
)
cat << END
-dnl Process this file with autoconf to produce a configure script. -*-shell-script-*-
+dnl -*-shell-script-*-
+dnl Process this file with autoconf to produce a configure script.
dnl should cache result.
dnl should look in $prefix first.
# rgu
sed 's/TOPLEVEL_//g' < .version > lily/.version
(cd lily; CXX="$ac_cv_prog_CXX" ../bin/make_version > out/version.hh
-)
- (cd flower;
)
cat << END
--- /dev/null
+MODULE_CXXFLAGS = @MODULE_CXXFLAGS@
+MODULE_LDFLAGS = @MODULE_LDFLAGS@
+LIB_SUFFIX = @LIB_SUFFIX@
#
NAME = flower
MODULE_NAME = flower
+include out/Flower-flags.make
#
# edit .version only
include ./$(depth)/.version
include ./$(depth)/make/Variables.make
include ./$(depth)/make/Files.make
+
#
-CXXFLAGS+=-O2
# descent order into subdirectories:
#
SUBDIRS = include test
#
SCRIPTS =
README_FILES = NEWS README TODO
-EXTRA_DISTFILES= configure config.hh.in configure.in .version $(README_FILES) $(SCRIPTS)
+EXTRA_DISTFILES= configure config.hh.in configure.in .version $(README_FILES) $(SCRIPTS) Flower-flags.make.in
#
include ./$(depth)/make/Targets.make
include ./$(depth)/make/Rules.make
#
+default: shared-lib
+
+shared-lib: $(SHAREDLIBRARY)
# version:
#
localdistclean:
rm -f config.cache config.status
+
+localinstall: $(LIBFLOWER)
+ $(INSTALL) -d $(libdir)
+ $(INSTALL) $(LIBFLOWER) $(libdir)
+# ln -s $(libdir)/libflower.so.$(VERSION) $(libdir
+
+localuninstall:
+ rm -f $(libdir)/libflower.{so,a}
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.10
+# Generated automatically using autoconf version 2.12
# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
#
# This configure script is free software; the Free Software Foundation
ac_help=
ac_default_prefix=/usr/local
# Any additions from configure.in:
+ac_help="$ac_help
+ enable-shared shared flower library"
+ac_help="$ac_help
+ disable-optimise optimisations off"
# Initialize some variables set by options.
# The variables have the same names as the options, with
# Initialize some other variables.
subdirs=
MFLAGS= MAKEFLAGS=
+# Maximum number of lines to put in a shell here document.
+ac_max_here_lines=12
ac_prev=
for ac_option
verbose=yes ;;
-version | --version | --versio | --versi | --vers)
- echo "configure generated by autoconf version 2.10"
+ echo "configure generated by autoconf version 2.12"
exit 0 ;;
-with-* | --with-*)
done
# NLS nuisances.
-# Only set LANG and LC_ALL to C if already set.
-# These must not be set unconditionally because not all systems understand
-# e.g. LANG=C (notably SCO).
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+# Only set these to C if already set. These must not be set unconditionally
+# because not all systems understand e.g. LANG=C (notably SCO).
+# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
+# Non-C LC_CTYPE values break the ctype check.
if test "${LANG+set}" = set; then LANG=C; export LANG; fi
+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
+if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
# confdefs.h avoids OS command line length limits that DEFS can exceed.
rm -rf conftest* confdefs.h
ac_cpp='$CPP $CPPFLAGS'
ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
# Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cxx_cross
+
+
+optimise_b=yes
+shared_b=yes
+LIB_SUFFIX=.a
+
+# Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+ enableval="$enable_shared"
+ shared_b=$enableval
+fi
+
+
+# Check whether --enable-optimise or --disable-optimise was given.
+if test "${enable_optimise+set}" = set; then
+ enableval="$enable_optimise"
+ optimise_b=$enableval
+fi
+
+
+if test $shared_b = yes; then
+ MODULE_CXXFLAGS="$MODULE_CXXFLAGS -fPIC"
+ MODULE_LDFLAGS="-shared -Wl,-soname,libflower.so "
+ LIB_SUFFIX=.so
+fi
+
+if test $optimise_b = yes; then
+ MODULE_CXXFLAGS="$MODULE_CXXFLAGS -O2 -DSTRING_UTILS_INLINED"
+fi
+
-for ac_prog in $CCC c++ g++ gcc CC cxx
+
+for ac_prog in $CCC c++ g++ gcc CC cxx cc++
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:571: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
test -n "$CXX" || CXX="gcc"
+echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
+echo "configure:602: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+
+ac_ext=C
+# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cxx_cross
+
+cat > conftest.$ac_ext <<EOF
+#line 612 "configure"
+#include "confdefs.h"
+main(){return(0);}
+EOF
+if { (eval echo configure:616: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+ ac_cv_prog_cxx_works=yes
+ # If we can't run a trivial program, we are probably using a cross compiler.
+ if (./conftest; exit) 2>/dev/null; then
+ ac_cv_prog_cxx_cross=no
+ else
+ ac_cv_prog_cxx_cross=yes
+ fi
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ ac_cv_prog_cxx_works=no
+fi
+rm -fr conftest*
+
+echo "$ac_t""$ac_cv_prog_cxx_works" 1>&6
+if test $ac_cv_prog_cxx_works = no; then
+ { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
+fi
+echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
+echo "configure:636: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
+cross_compiling=$ac_cv_prog_cxx_cross
+
echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
+echo "configure:641: checking whether we are using GNU C++" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
yes;
#endif
EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:567: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:650: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gxx=yes
else
ac_cv_prog_gxx=no
fi
echo "$ac_t""$ac_cv_prog_gxx" 1>&6
+
if test $ac_cv_prog_gxx = yes; then
GXX=yes
- if test "${CXXFLAGS+set}" != set; then
- echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_prog_gxx_g'+set}'`\" = set"; then
+ ac_test_CXXFLAGS="${CXXFLAGS+set}"
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS=
+ echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
+echo "configure:665: checking whether ${CXX-g++} accepts -g" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
echo 'void f(){}' > conftest.cc
if test -z "`${CXX-g++} -g -c conftest.cc 2>&1`"; then
- ac_cv_prog_gxx_g=yes
+ ac_cv_prog_cxx_g=yes
else
- ac_cv_prog_gxx_g=no
+ ac_cv_prog_cxx_g=no
fi
rm -f conftest*
fi
-echo "$ac_t""$ac_cv_prog_gxx_g" 1>&6
- if test $ac_cv_prog_gxx_g = yes; then
- CXXFLAGS="-g -O"
- else
- CXXFLAGS="-O"
- fi
+echo "$ac_t""$ac_cv_prog_cxx_g" 1>&6
+ if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS="$ac_save_CXXFLAGS"
+ elif test $ac_cv_prog_cxx_g = yes; then
+ CXXFLAGS="-g -O2"
+ else
+ CXXFLAGS="-O2"
fi
else
GXX=
test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
fi
-# If we cannot run a trivial program, we must be cross compiling.
-echo $ac_n "checking whether cross-compiling""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_c_cross'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test "$cross_compiling" = yes; then
- ac_cv_c_cross=yes
-else
-cat > conftest.$ac_ext <<EOF
-#line 613 "configure"
-#include "confdefs.h"
-#ifdef __cplusplus
-extern "C" void exit(int);
-#endif
-main(){return(0);}
-EOF
-{ (eval echo configure:620: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
-if test -s conftest && (./conftest; exit) 2>/dev/null; then
- ac_cv_c_cross=no
-else
- ac_cv_c_cross=yes
-fi
-fi
-rm -fr conftest*
-fi
-
-echo "$ac_t""$ac_cv_c_cross" 1>&6
-cross_compiling=$ac_cv_c_cross
-
echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_func_memcmp'+set}'`\" = set"; then
+echo "configure:693: checking for 8-bit clean memcmp" >&5
+if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
- ac_cv_func_memcmp=no
+ ac_cv_func_memcmp_clean=no
else
-cat > conftest.$ac_ext <<EOF
-#line 641 "configure"
+ cat > conftest.$ac_ext <<EOF
+#line 701 "configure"
#include "confdefs.h"
#ifdef __cplusplus
extern "C" void exit(int);
}
EOF
-{ (eval echo configure:654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
-if test -s conftest && (./conftest; exit) 2>/dev/null; then
- ac_cv_func_memcmp=yes
+if { (eval echo configure:714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+ ac_cv_func_memcmp_clean=yes
else
- ac_cv_func_memcmp=no
-fi
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ ac_cv_func_memcmp_clean=no
fi
rm -fr conftest*
fi
-echo "$ac_t""$ac_cv_func_memcmp" 1>&6
-test $ac_cv_func_memcmp = no && LIBOBJS="$LIBOBJS memcmp.o"
+fi
+
+echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6
+test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.o"
echo $ac_n "checking for vprintf""... $ac_c" 1>&6
+echo "configure:732: checking for vprintf" >&5
if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 672 "configure"
+#line 737 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char vprintf(); below. */
builtin and then its argument prototype would still apply. */
char vprintf();
-int main() { return 0; }
-int t() {
+int main() {
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
; return 0; }
EOF
-if { (eval echo configure:699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+if { (eval echo configure:763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
eval "ac_cv_func_vprintf=yes"
else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_func_vprintf=no"
fi
rm -f conftest*
-
fi
+
if eval "test \"`echo '$ac_cv_func_'vprintf`\" = yes"; then
echo "$ac_t""yes" 1>&6
cat >> confdefs.h <<\EOF
if test "$ac_cv_func_vprintf" != yes; then
echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
+echo "configure:787: checking for _doprnt" >&5
if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 725 "configure"
+#line 792 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char _doprnt(); below. */
builtin and then its argument prototype would still apply. */
char _doprnt();
-int main() { return 0; }
-int t() {
+int main() {
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
; return 0; }
EOF
-if { (eval echo configure:752: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+if { (eval echo configure:818: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
eval "ac_cv_func__doprnt=yes"
else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_func__doprnt=no"
fi
rm -f conftest*
-
fi
+
if eval "test \"`echo '$ac_cv_func_'_doprnt`\" = yes"; then
echo "$ac_t""yes" 1>&6
cat >> confdefs.h <<\EOF
fi
-for ac_func in memmem snprintf foobar
+for ac_func in memmem snprintf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:845: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 781 "configure"
+#line 850 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
builtin and then its argument prototype would still apply. */
char $ac_func();
-int main() { return 0; }
-int t() {
+int main() {
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
; return 0; }
EOF
-if { (eval echo configure:808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+if { (eval echo configure:876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_func_$ac_func=no"
fi
rm -f conftest*
-
fi
+
if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
echo "$ac_t""yes" 1>&6
ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
# --recheck option to rerun configure.
#
EOF
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
# Ultrix sh set writes to stderr and can't be redirected directly,
# and sets the high bit in the cache file unless we assign to the vars.
(set) 2>&1 |
- sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \
- >> confcache
+ case `(ac_space=' '; set) 2>&1` in
+ *ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote substitution
+ # turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ -e "s/'/'\\\\''/g" \
+ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
+ ;;
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
+ ;;
+ esac >> confcache
if cmp -s $cache_file confcache; then
:
else
echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-version | --version | --versio | --versi | --vers | --ver | --ve | --v)
- echo "$CONFIG_STATUS generated by autoconf version 2.10"
+ echo "$CONFIG_STATUS generated by autoconf version 2.12"
exit 0 ;;
-help | --help | --hel | --he | --h)
echo "\$ac_cs_usage"; exit 0 ;;
ac_given_srcdir=$srcdir
-trap 'rm -fr `echo " out/config.hh:config.hh.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+trap 'rm -fr `echo "out/Flower-flags.make:Flower-flags.make.in out/config.hh:config.hh.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
EOF
cat >> $CONFIG_STATUS <<EOF
s%@oldincludedir@%$oldincludedir%g
s%@infodir@%$infodir%g
s%@mandir@%$mandir%g
+s%@MODULE_CXXFLAGS@%$MODULE_CXXFLAGS%g
+s%@MODULE_LDFLAGS@%$MODULE_LDFLAGS%g
+s%@LIB_SUFFIX@%$LIB_SUFFIX%g
s%@CXX@%$CXX%g
s%@LIBOBJS@%$LIBOBJS%g
CEOF
EOF
+
+cat >> $CONFIG_STATUS <<\EOF
+
+# Split the substitutions into bite-sized pieces for seds with
+# small command number limits, like on Digital OSF/1 and HP-UX.
+ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
+ac_file=1 # Number of current file.
+ac_beg=1 # First line for current file.
+ac_end=$ac_max_sed_cmds # Line after last line for current file.
+ac_more_lines=:
+ac_sed_cmds=""
+while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
+ else
+ sed "${ac_end}q" conftest.subs > conftest.s$ac_file
+ fi
+ if test ! -s conftest.s$ac_file; then
+ ac_more_lines=false
+ rm -f conftest.s$ac_file
+ else
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds="sed -f conftest.s$ac_file"
+ else
+ ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
+ fi
+ ac_file=`expr $ac_file + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_cmds`
+ fi
+done
+if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+fi
+EOF
+
cat >> $CONFIG_STATUS <<EOF
-CONFIG_FILES=\${CONFIG_FILES-""}
+CONFIG_FILES=\${CONFIG_FILES-"out/Flower-flags.make:Flower-flags.make.in"}
EOF
cat >> $CONFIG_STATUS <<\EOF
for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
- # Support "outfile[:infile]", defaulting infile="outfile.in".
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
case "$ac_file" in
- *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'`
+ *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
*) ac_file_in="${ac_file}.in" ;;
esac
- # Adjust relative srcdir, etc. for subdirectories.
+ # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
# Remove last slash and all that follows it. Not all systems have dirname.
ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
top_srcdir="$ac_dots$ac_given_srcdir" ;;
esac
+
echo creating "$ac_file"
rm -f "$ac_file"
configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
# $configure_input" ;;
*) ac_comsub= ;;
esac
+
+ ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
sed -e "$ac_comsub
s%@configure_input@%$configure_input%g
s%@srcdir@%$srcdir%g
s%@top_srcdir@%$top_srcdir%g
-" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file
+" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
fi; done
-rm -f conftest.subs
+rm -f conftest.s*
# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
# NAME is the cpp macro being defined and VALUE is the value it is being given.
ac_eC=' '
ac_eD='%g'
-CONFIG_HEADERS=${CONFIG_HEADERS-"out/config.hh:config.hh.in"}
+if test "${CONFIG_HEADERS+set}" != set; then
+EOF
+cat >> $CONFIG_STATUS <<EOF
+ CONFIG_HEADERS="out/config.hh:config.hh.in"
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+fi
for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
- # Support "outfile[:infile]", defaulting infile="outfile.in".
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
case "$ac_file" in
- *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'`
+ *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
*) ac_file_in="${ac_file}.in" ;;
esac
echo creating $ac_file
rm -f conftest.frag conftest.in conftest.out
- cp $ac_given_srcdir/$ac_file_in conftest.in
+ ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+ cat $ac_file_inputs > conftest.in
EOF
# Break up conftest.vals because some shells have a limit on
# the size of here documents, and old seds have small limits too.
-# Maximum number of lines to put in a single here document.
-ac_max_here_lines=12
rm -f conftest.tail
while :
fi
fi; done
+EOF
+cat >> $CONFIG_STATUS <<EOF
+EOF
+cat >> $CONFIG_STATUS <<\EOF
exit 0
EOF
-dnl Process this file with autoconf to produce a configure script.
+dnl -*-shell-script-*-
+dnl Process this file with autoconf to produce a configure script.-
AC_INIT(choleski.cc)
AC_LANG_CPLUSPLUS
+optimise_b=yes
+shared_b=yes
+LIB_SUFFIX=.a
+
+AC_ARG_ENABLE(shared,
+ [ enable-shared shared flower library],
+ [shared_b=$enableval])
+
+AC_ARG_ENABLE(optimise,
+ [ disable-optimise optimisations off],
+ [optimise_b=$enableval])
+
+if test $shared_b = yes; then
+ MODULE_CXXFLAGS="$MODULE_CXXFLAGS -fPIC"
+ MODULE_LDFLAGS="-shared -Wl,-soname,libflower.so "
+ LIB_SUFFIX=.so
+fi
+
+if test $optimise_b = yes; then
+ MODULE_CXXFLAGS="$MODULE_CXXFLAGS -O2 -DSTRING_UTILS_INLINED"
+fi
+
dnl should enable flower specific compile flags.
+AC_SUBST(MODULE_CXXFLAGS)
+AC_SUBST(MODULE_LDFLAGS)
+AC_SUBST(LIB_SUFFIX)
AC_PROG_CXX
AC_FUNC_MEMCMP
AC_FUNC_VPRINTF
-AC_CHECK_FUNCS(memmem snprintf foobar)
+AC_CHECK_FUNCS(memmem snprintf )
AC_CONFIG_HEADER(out/config.hh:config.hh.in)
CXX="$ac_cv_prog_CXX" ../bin/make_version > out/version.hh
-AC_OUTPUT()
+AC_OUTPUT(out/Flower-flags.make:Flower-flags.make.in)
#ifndef INLINE
#define INLINE inline
#endif
-#include "string-data.inl"
+#include "string-data.icc"
#endif
#ifdef STRING_UTILS_INLINED
#ifndef INLINE
-#define INLINE.iccine
+#define INLINE inline
#endif
#include "string-handle.icc"
/* we should be resetting INLINE. oh well. */
# module compile settings: (not generally needed!
#
-EXTRA_CFLAGS = -DSTRING_TEST
-#
# list of distribution files:
# list of custom libraries:
#
-CUSTOMLIBES = $(LIBFLOWER)\
-LOADLIBES +=
+MODULE_LIBDEPS=check-flower-deps
+MODULE_LIBES = -lflower
#
-#ifdef STRING_TEST
/*
stupid test program to verify stringlib
stringtest.cc
return 0;
}
-#endif STRING_TEST
"linestaf" "\linestafsym{%}{%}"
"stem" "\stem{%}{%}"
"fill" "\hbox{}"
+ % ugh. 8pt
"crescendosym" "\crescendosym{%}" 0\pt 0\pt -3\pt 3\pt
"decrescendosym" "\decrescendosym{%}" 0\pt 0\pt -3\pt 3\pt
}
\meter {2/4}
}
-ritme = \staff{
+ritme = \staff{melodicregs
globals
% rhythmic broken for now
% \rhytmic{
% }
}
-melody= \staff{
+melody= \staff{melodicregs
globals
\melodic{
c8\key{fis cis gis}
%
%
% The purpose of this file is to demonstrate features of LilyPond;
-% respect the copyright.
+% respect the copyright. %% VAAG!
%
% \barnumbering5
% \barnumberstyle\boxed
globalmusic= \melodic{
\meter {2/4}
% \key fis
- \skip {56*2}
+ \skip {2*56}
% \key bes es as
- \skip {8*2}
+ \skip {2*8}
\meter {6/8}
- \skip{ 48*8}
+ \skip{ 8*48}
\meter {2/4}
- \skip {16*2}
+ \skip {2*16}
% \key fis
}
include "mlcello.ly"
\score{
- \staff{ globalmusic alto }
- \staff{ globalmusic violinI }
- \staff{ globalmusic violinII }
- \staff{ globalmusic cello }
+ \staff{ melodicregs globalmusic alto }
+ \staff{melodicregs globalmusic violinI }
+ \staff{ melodicregs globalmusic violinII }
+ \staff{ melodicregs globalmusic cello }
\paper{
\unitspace 24\mm
\width 195\mm
% add any impressive examples here, please
ritme = \staff {
- \rhythmic{
- \partial {1*8} % doesnt' have to be here.
- \meter{ 4/4}
+ melodicregs
+ \melodic{ %\octave {c}
+ \partial {8}
+ \meter{ 4/4}
c8 |
[a8() a8. a8 a16 a16 a16] c4. | % watch the beams!
% divide measure in 5 equal parts. Usually it 2+3 or 3+2
\grouping { 5*16 }
[c8 c16 c8 ] | % watch THIS!
- \plet{5/4} [c16 c16 c16 c16]\plet{1/1} |
+ [c16 c16 c16 c16]5/4 |
\meter{ 2/8}
c4 |
c4 c4 c4 c4
% [c16 c16 c16 c16 c16 ] |
}
-
- %
- % The \co\mmands section takes the same stuff that \music { } takes;
- % the \co\mmands issued below could have been issued inside the above
- % \music block;
- %
-
}
-another = \staff{
+another = \staff{ melodicregs
\melodic{ \meter{ 4/4}
c1 c1 c1 c4 c4 c4 c4 \meter{ 4/4} c1 c1 c1
}
}
-yanother = \staff{
+yanother = \staff{ melodicregs
\melodic{ \meter{ 4/4}
c1 c1 c1 c4 c4 c4 c4 c1 c1 c1
}
+%
+% scales with accents.
+%
-blah = \staff{ "melodic"
+blah = \staff{ melodicregs
\melodic {
\duration { 8 } \meter {6/8}
\octave{ c }
- |[ a cr a a a a a a a rc a ]6/9
+ |[ a cr a a a a a a a rc a ff decr ]6/9
\octave{ c }
- |[ a decr a a a a a a a rc a ]6/9
+ |[ a a a a a a a a rc a ]6/9
\octave { c' }
[ 'c 'g d a e' b' f'' c''' g''' ]6/9
[ g''' c''' f'' b' e' a d 'g 'c ]6/9
[ d' g c ]2/3
[ f c' g' ]2/3
[ g' c' f ]2/3
- [ g' c' f ]2/3
+ [ g' c' f ]2/3
\meter {4/4}
c1
#
# list of custom libraries:
-#
-# yes, i know about the -L and -l options,
-# but these libraries get rebuild when needed.
-CUSTOMLIBES = \
LOADLIBES +=
#
# MAINTARGET = $(EXECUTABLE)
# MAINTARGET = $(LIBRARY)
# MAINTARGET = $(bindir)/$(EXECUTABLE)# huh?
-MAINTARGET = $(libdir)/$(LIBRARY)# huh?
+MAINTARGET = $(outdir)/$(LIBRARY)# huh?
default: $(MAINTARGET)
#
if ( mom == upper_mom ) // don-t miss last (sic)
return upper_dur;
if ( ( mom >= lower_mom ) && ( mom <= upper_mom ) ) {
- warning( String( "duration not exact: " ) + String( (Real)mom ), 0 );
+ warning( String( "duration not exact: " ) + String( (Real)mom ) );
if ( abs( mom - lower_mom ) < abs( mom - upper_mom ) )
return lower_dur;
else
}
/** pop the inputstack. conceptually this is a destructor, but it
- does not destruct the Source_file it creates. */
+ does not destruct the Source_file that Includable_lexer::new_input creates. */
bool
Includable_lexer::close_input()
{
{
char_count_stack_.top() += count;
}
+
+Source_file*
+Includable_lexer::source_file_l()const
+{
+ return include_stack_.top();
+}
#include "real.hh"
#include "proto.hh"
-void message( String message_str, char const* context_ch_c_l );
-void warning( String message_str, char const* context_ch_c_l );
void warning( String message_str );
-void error( String message_str, char const* context_ch_c_l );
-
void error( String message_str);
-void error(String s); // errors
void error_t(const String& s, Time_description const & t_tdes);
void error_t(String const &s, const Moment &when);
// warnings
Array<Source_file*> include_stack_;
Array<int> char_count_stack_;
public:
+ Source_file* source_file_l()const;
void new_input(String s,Sources*);
Includable_lexer();
~Includable_lexer();
*/
class Input {
char const *defined_ch_C_ ;
-
+ Source_file * source_file_l_;
public:
- set_spot(char const *);
- Input(char const *);
- Input(Input const &);
+
+ void warning(String)const; // should use member func?
+ void error(String)const;
+ void message(String)const;
+ void set_spot(Input const &);
+
+ String location_str()const;
+ Input(Source_file*, char const*);
+ Input();
};
#endif // INPUT_HH
--- /dev/null
+/*
+ input.cc -- implement Input
+
+ source file of the LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+#include "proto.hh"
+#include "input.hh"
+#include "string.hh"
+#include "source.hh"
+#include "source-file.hh"
+
+Input::Input(Source_file*s, char const *cl)
+{
+ source_file_l_=s;
+ defined_ch_C_=cl;
+}
+
+Input::Input()
+{
+ source_file_l_ = 0;
+ defined_ch_C_ = 0;
+}
+
+Input::Input(Input const &s)
+{
+ source_file_l_ = s.source_file_l_;
+ defined_ch_C_ = s.defined_ch_C_;
+}
+
+void
+Input::set_spot(Input const &i)
+{
+ *this = i;
+}
+
+void
+Input::message(String message_str)const
+{
+ String str = "";
+
+ if ( source_file_l_ ) {
+ str += source_file_l_->file_line_no_str(defined_ch_C_) + String(": ");
+ }
+
+ str += message_str;
+ if ( source_file_l_ ) {
+ str += ":\n";
+ str += source_file_l_->error_str( defined_ch_C_);
+ }
+ cerr << str << endl;
+}
+
+void
+Input::warning( String message_str)const
+{
+ message( "warning: " + message_str);
+}
+void
+Input::error(String s)const
+{
+ message("error: "+ s);
+ exit (1);
+}
+
+String
+Input::location_str()const
+{
+ if (source_file_l_)
+ return source_file_l_->file_line_no_str(defined_ch_C_);
+ else
+ return "(location unknown)";
+}
data_caddr_ = (caddr_t)mmap( (void*)0, size_off_, PROT_READ, MAP_SHARED, fildes_i_, 0 );
if ( (int)data_caddr_ == -1 )
- warning( String( "can't map: " ) + name_str_ + String( ": " ) + strerror( errno ), 0 );
+ warning( String( "can't map: " ) + name_str_ + String( ": " ) + strerror( errno ));
}
String
fildes_i_ = ::open( name_str_, O_RDONLY );
if ( fildes_i_ == -1 ) {
- warning( String( "can't open: " ) + name_str_ + String( ": " ) + strerror( errno ), 0);
+ warning( String( "can't open: " ) + name_str_ + String( ": " ) + strerror( errno ));
return;
}
MAJOR_VERSION = 0
MINOR_VERSION = 0
-PATCH_LEVEL = 46
+PATCH_LEVEL = 47
# use to send patches, always empty for released version:
# include separator: ".postfix", "-pl" makes rpm barf
-MY_PATCH_LEVEL = .jcn1
+MY_PATCH_LEVEL =
# generic variables:
#
+include Stable.make
include ./$(depth)/make/Variables.make
include ./$(depth)/make/Files.make
include .version
-include Stable.make
#
# identify module:
# list of custom libraries:
#
-# yes, i know about the -L and -l options,
-# but these libraries get rebuilt when needed.
-CUSTOMLIBES = $(LIBLILY) $(LIBFLOWER)
+MODULE_LIBDEPS= check-flower-deps check-lily-deps
+MODULE_LIBES= -llily -lflower
-LOADLIBES +=
#
# main target of this module:
Symbol s( paper()->lookup_l()->hairpin(w_dim, grow_dir_i_ < 0) );
m_p->add(Atom(s));
int pos = (dir_i_ >0) ? staff_size_i_ + 4 : - 4 ;
- m_p->translate(Offset(0,pos * paper()->internote()));
+ if(dir_i_<0 ) // should do something better anyway.
+ m_p->translate(Offset(0, -m_p->extent().y.left ));
+ m_p->translate(Offset(x_off_dim,pos * paper()->internote()));
}
IMPLEMENT_STATIC_NAME(Crescendo);
+++ /dev/null
-/*
- input.hh -- declare Input
-
- source file of the LilyPond music typesetter
-
- (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef INPUT_HH
-#define INPUT_HH
-
-/**
- Base class for anything that records its poisition in the parse file.
- */
-class Input {
- char const *defined_ch_C_ ;
- Sources * sources_l_;
-public:
-
- void warning(String)const; // should use member func?
- void error(String)const;
- void message(String)const;
- void set_spot(Input const &);
- void set_sources(Sources *);
-
- String location_str()const;
- Input(Sources *,char const*);
- Input();
-};
-
-#endif // INPUT_HH
String str()const;
void print() const;
void setpartial(Moment p);
+ String try_set_partial_str(Moment)const;
Moment barleft();
void set_meter(int,int);
- static int compare (Time_description&, Time_description&);
+ static int compare (const Time_description&, const Time_description&);
};
#include "compare.hh"
+++ /dev/null
-/*
- input.cc -- implement Input
-
- source file of the LilyPond music typesetter
-
- (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-#include "proto.hh"
-#include "input.hh"
-#include "string.hh"
-#include "source.hh"
-#include "source-file.hh"
-
-Input::Input(Sources*s, char const *cl)
-{
- sources_l_=s;
- defined_ch_C_=cl;
-}
-
-Input::Input()
-{
- sources_l_ = 0;
- defined_ch_C_ = 0;
-}
-
-Input::Input(Input const &s)
-{
- sources_l_ = s.sources_l_;
- defined_ch_C_ = s.defined_ch_C_;
-}
-
-void
-Input::set_spot(Input const &i)
-{
- *this = i;
-}
-
-void
-Input::message(String message_str)const
-{
- String str = "";
- Source_file* sourcefile_l=0;
-
- if (sources_l_)
- sourcefile_l = sources_l_->sourcefile_l( defined_ch_C_ );
-
- if ( sourcefile_l ) {
- str += sourcefile_l->file_line_no_str(defined_ch_C_) + String(": ");
- }
-
- str += message_str;
- if ( sourcefile_l ) {
- str += ":\n";
- str += sourcefile_l->error_str( defined_ch_C_);
- }
- /*
- if ( busy_parsing() )
- cerr << endl;
- */
- cerr << str << endl;
-}
-
-void
-Input::warning( String message_str)const
-{
- message( "warning: " + message_str);
-}
-void
-Input::error(String s)const
-{
- message("error: "+ s);
- exit (1);
-}
-
-String
-Input::location_str()const
-{
- Source_file * sourcefile_l=0;
- if (sources_l_)
- sourcefile_l = sources_l_->sourcefile_l (defined_ch_C_);
- if (sourcefile_l)
- return sourcefile_l->file_line_no_str(defined_ch_C_);
- else
- return "(location unknown)";
-}
String s (YYText()+1);
s = s.left_str(s.length_i()-1);
mtor << "#include `" << s << "\'\n";
-// defined_ch_C = here_ch_C() - String( YYText() ).length_i() - 1;
new_input(s,source_l_g);
yy_pop_state();
}
}
<*>. {
- error( String( "illegal character: " ) + String( YYText()[0] ), here_ch_C() );
+ LexerError( String( "illegal character: " ) +String( YYText()[0] ));
return YYText()[0];
}
if (key_C_)
local_key_.reset(*key_C_);
else if( time_C_->when_ >Moment(0))
- warning ("Help me! can't figure current key", (const char*)0);
+ warning ("Help me! can't figure current key");
}
}
IMPLEMENT_STATIC_NAME(Local_key_register);
if (include_stack_.empty()) {
*mlog << "error at EOF" << s << '\n';
} else {
- char const* ch_C = here_ch_C();
- if ( ch_C ) {
- ch_C--;
- while (isspace(*ch_C == ' ' ))
- ch_C--;
- ch_C++;
- }
errorlevel_i_ |= 1;
- error( s, ch_C );
+ error(String(s));
+ // FIXME.
+/*Input spot(source_l_g = here_spot();
+
+ spot.error( s );
+ */
}
}
source_l_ = source_l;
lexer_p_ = 0;
default_duration_.type_i_ = 4;
- default_octave_i_ = 3; // retain old default
+ default_octave_i_ = 0;
textstyle_str_="roman"; // in lexer?
error_level_i_ = 0;
last_duration_mode = false;
Input
My_lily_parser::here_input()const
{
- return Input(source_l_, here_ch_C());
+ Source_file * f_l= lexer_p_->source_file_l();
+ return Input(f_l, here_ch_C());
}
for (int i=0; i < ptr()->timing_req_l_arr_.size(); i++) {
Timing_req * tr_l = ptr()->timing_req_l_arr_[i];
if (tr_l->partial()) {
- time_.setpartial(tr_l->partial()->duration_);
+ Moment m = tr_l->partial()->duration_;
+ String error = time_.try_set_partial_str(m);
+ if (error != "") {
+ tr_l->warning(error);
+ } else
+ time_.setpartial(m);
} else if (tr_l->barcheck() && time_.whole_in_measure_) {
tr_l ->warning( "Barcheck failed");
} else if (tr_l->cadenza()) {
void
Text_item::set_default_index()
{
- pos_i_ = (dir_i_ > 0) ? staffsize_i_ + 2: -4;
+ pos_i_ = (dir_i_ > 0) ? staffsize_i_ + 4: -4;
}
void
Text_item::brew_molecule_p() const
{
Molecule* mol_p = new Molecule(tdef_p_->create_atom(paper()));
- mol_p->translate(Offset(0, pos_i_ * paper()->internote()));
- if(dir_i_<0)
- mol_p->translate(Offset(0, -mol_p->extent().y.length() ));
+ if(dir_i_<0 ) // should do something better anyway.
+ mol_p->translate(Offset(0, -mol_p->extent().y.left ));
+ mol_p->translate(Offset(0, pos_i_ * paper()->internote()));
return mol_p;
}
{
if (cadenza_b_ && !b) {
if (whole_in_measure_) {
- bars_i_ ++;
+ bars_i_ ++; // should do?
whole_in_measure_ = 0;
}
}
{
return!(whole_in_measure_);
}
+
+/**
+ retrieve error messages.
+ @return
+ error messages if not possible, "" if possible
+ */
+String
+Time_description::try_set_partial_str(Moment p)const
+{
+ if (when_)
+ return ("Partial measure only allowed at beginning.");
+ if (p<Rational(0))
+ return ("Partial must be non-negative");
+ if (p > whole_per_measure_)
+ return ("Partial measure too large");
+ return "";
+}
+
void
Time_description::setpartial(Moment p)
{
- if (when_)
- error_t ("Partial measure only allowed at beginning.", *this);
- if (p<Rational(0)||p > whole_per_measure_)
- error_t ("Partial measure has incorrect size", *this);
whole_in_measure_ = whole_per_measure_ - p;
}
}
int
-Time_description::compare(Time_description &t1, Time_description&t2)
+Time_description::compare(Time_description const &t1, Time_description const&t2)
{
int i = sign(t1.when_-t2.when_);
error(e);
}
-void
-message( String message_str, char const* context_ch_C )
-{
- String str = "";
- Source_file* sourcefile_l = source_l_g->sourcefile_l( context_ch_C );
- if ( sourcefile_l ) {
- str += sourcefile_l->file_line_no_str(context_ch_C) + String(": ");
- }
- str += message_str;
- if ( sourcefile_l ) {
- str += ":\n";
- str += sourcefile_l->error_str( context_ch_C );
- }
- if ( busy_parsing() )
- cerr << endl;
- cerr << str << endl;
-}
-
-void
-warning( String message_str, char const* context_ch_C )
-{
- message( "warning: " + message_str, context_ch_C );
-}
-
-void
-error( String message_str, char const* context_ch_C )
-{
- message( message_str, context_ch_C );
- // since when exits error again?
- // i-d say: error: errorlevel |= 1; -> no output upon error
- // warning: recovery -> output (possibly wrong)
-/* if ( lexer )
- lexer->errorlevel_i_ |= 1;*/
-// exit( 1 );
-}
-
-
void
warning(String m)
{
- warning(m, (char*)0);
+ cerr << "warning" <<m <<endl;
+
}
void
message(String m)
{
- error(m, (char*)0);
+ cerr << m<<endl;
}
USER_CXXFLAGS = @CXXFLAGS@ @CPPFLAGS@
#CXX = @CXX@
-
+libdir = @libdir@
prefix = @prefix@
TEXPREFIX = @TEXPREFIX@
mandir = @mandir@
-# project LilyPond -- the musical typesetter
-# title automatic file variables
-# file make/Files.make
-# abstract mmm, brr.
-#
-#
-# Copyright (c) 1997 by
-# Jan Nieuwenhuizen <jan@digicash.com>
-# Han-Wen Nienhuys <hanwen@stack.nl>
-
# list of c++ header files:
#
HHFILES = $(wildcard *.hh)
# list of c++ template files:
#
+
TCCFILES = $(wildcard *.tcc)
-#
-# list plain c++ source files:
-#
-CCFILES = $(wildcard *.cc)
#
-
# list of other source files:
#
+
EXTRA_SOURCE_FILES = $(wildcard *.y *.l)
-#
+#
PODFILES = $(wildcard *.pod)
+CCFILES = $(wildcard *.cc)
MAKEFILES = $(wildcard *.make)
ALL_SOURCES=$(HHFILES) $(CCFILES) $(EXTRA_SOURCE_FILES) $(INLFILES) \
# this is supposed to clear all suffixes:
.SUFFIXES:
+
# so why does make still consider xx.y : RCS/xx.y,v ?
# there is no suffix ,v anymore!
-.SUFFIXES: .cc .o .hh .y .l .pod .txt .1 .dep
+.SUFFIXES: .cc .o .hh .y .l .pod .txt .1 .dep .html
-# cancel implicit rules:
-#
-# shit, how to get rid of these stupid built-in rules?
-# include ./$(depth)/make/Builtin-rules.make
-#
# compile rules:
#
$(depth)/%.text: $(outdir)/%.text
cp $< $@
+$(outdir)/%.html: %.pod
+ $(pod2html) $<
+ mv $(notdir $@) $(outdir)/
+
$(outdir)/%.5: %.pod
$(pod2groff)
$(outdir)/%.1: %.pod
# Jan Nieuwenhuizen <jan@digicash.com>
# Han-Wen Nienhuys <hanwen@stack.nl>
-.PHONY : all clean config default dist doc doc++ dummy exe help lib TAGS
+.PHONY : all clean config default dist doc doc++ dummy exe help lib TAGS html
# target all:
#
# dependency list of executable:
#
EXECUTABLE = $(lily_bindir)/$(NAME)
-$(EXECUTABLE): $(build) $(OFILES) $(CUSTOMLIBES)
+$(EXECUTABLE): $(build) $(OFILES) $(MODULE_LIBDEPS)
$(INCREASE_BUILD)
$(MAKE) -S $(OFILES) $(SILENT_LOG)
ifdef STABLEOBS
# dependency list of library:
#
-LIBRARY = $(libdir)/$(LIB_PREFIX)$(NAME)$(LIB_SUFFIX)
-$(LIBRARY): $(build) $(OFILES) $(CUSTOMLIBES)
+LIBRARY = $(outdir)/$(LIB_PREFIX)$(NAME).a
+$(LIBRARY): $(build) $(OFILES) $(MODULE_LIBDEPS)
$(INCREASE_BUILD)
$(MAKE) $(OFILES) $(SILENT_LOG)
$(AR_COMMAND) $(OFILES)
$(RANLIB_COMMAND)
-
+SHAREDLIBRARY=$(outdir)/$(LIB_PREFIX)$(NAME).so
+$(SHAREDLIBRARY): $(build) $(OFILES) $(MODULE_LIBDEPS)
+ $(INCREASE_BUILD)
+ $(MAKE) $(OFILES) $(SILENT_LOG)
+ $(LD_COMMAND) $(OFILES) -o $@
+# ln -sf $(outdir)/$(LIB_PREFIX)$(NAME).so.$(VERSION) $(outdir)/$(LIB_PREFIX)$(NAME).so
#
lib: $(LIBRARY)
#
$(LIBFLOWER): check-flower-deps
check-flower-deps:
- $(MAKE) -C $(depth)/flower/ $(outdir)/$(notdir $(LIBFLOWER))
+ $(MAKE) -C $(depth)/flower/ default
check-lily-deps: check-flower-deps
$(MAKE) -C $(depth)/lib
#rpm: dist
# mv ./$(depth)/lilypond-$(TOPLEVEL_VERSION).tar.gz $(rpm-sources)
rpm:
- cp ./$(depth)/../releases/lilypond-$(TOPLEVEL_VERSION).tar.gz $(rpm-sources)
+ make -C ./$(depth) dist
+ cp $(depth)/lilypond-$(TOPLEVEL_VERSION).tar.gz $(rpm-sources)
cp $(doc-dir)/*.gif $(rpm-sources)
$(MAKE) -C $(make-dir) spec
rpm -ba $(makeout)/lilypond.spec
# Jan Nieuwenhuizen <jan@digicash.com>
# Han-Wen Nienhuys <hanwen@stack.nl>
-# this still sux
# will be split into CFLAGS/EXTRA_CFLAGS etc,
# so that defineable generically and per module
-# you-re using a i386, eh?
-#
-#PROFILEFLAG=-pg
-#
-
-# optimization and debugging:
-#
-# if defined (=not commented-out), debugging flag is ignored!
-OPTIFLAG=-DNDEBUG -DNPRINT -O2
-#
-DEBUGFLAG=-g
-#
-
-# turn off -pipe if linker doesn't support it
-#
-# USER_CXXFLAGS=-pipe -Wall -W -Wmissing-prototypes
-# added two warnings that are treated by cygwin32's gcc 2.7.2 as errors.
-# huh, but still, no warnings even provoced with linux's gcc 2.7.2.1?
-USER_CXXFLAGS=-pipe -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wconversion
-
#
# -lefence = ElectricFence.
#
# project LilyPond -- the musical typesetter
# title generic variables
# file make/Variables.make
-# abstract do not change this file for site-wide extensions;
-# please edit settings in User.make
+# abstract
+#
+# do not change this file for site-wide extensions; please use
+# make/out/Site.make;
+# Any change in files in this directory (make/) would be distributed.
#
# Copyright (c) 1997 by
# Jan Nieuwenhuizen <jan@digicash.com>
depdir = $(outdir)
flowerout = ./$(depth)/flower/$(outdir)
libout = ./$(depth)/lib/$(outdir)
-libdir = $(outdir)
lilyout = ./$(depth)/lily/$(outdir)
mi2muout = ./$(depth)/mi2mu/$(outdir)
makeout = ./$(depth)/make/$(outdir)
OFILECC = $(OFILEC:.cc=.o)
OFILEL = $(OFILECC:.l=.o)
OFILEY = $(OFILEL:.y=.o)
-OFILES = $(patsubst %,$(outdir)/%,$(OFILEY))
+OFILES = $(addprefix $(outdir)/,$(OFILEY))
#
# dummydeps
allhh := $(shell $(FIND) -name "*.hh" $(ERROR_LOG))
allcc := $(shell $(FIND) -name "*.cc" $(ERROR_LOG))
allobs := $(shell $(FIND) $(outdir) -name "*.o" $(ERROR_LOG))
-allibs := $(shell $(FIND) $(libdir) -name "*.lib" $(ERROR_LOG))
+
alldeps := $(shell $(FIND) $(outdir) -name "*.dep" $(ERROR_LOG))
# version stuff:
#
ARFLAGS = ru
CFLAGS = $(DEFINES) $(INCLUDES) $(USER_CFLAGS) $(EXTRA_CFLAGS)
-CXXFLAGS = $(CFLAGS) $(USER_CXXFLAGS) $(EXTRA_CXXFLAGS)
+
+# added two warnings that are treated by cygwin32's gcc 2.7.2 as errors.
+# huh, but still, no warnings even provoced with linux's gcc 2.7.2.1?
+EXTRA_CXXFLAGS=-pipe -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wconversion
+
+
+CXXFLAGS = $(CFLAGS) $(USER_CXXFLAGS) $(EXTRA_CXXFLAGS) $(MODULE_CXXFLAGS)
INCLUDES = -Iinclude -I$(outdir) -I$(include-lib) -I$(libout) -I$(include-flower) -I$(flowerout)
CXX_OUTPUT_OPTION = $< -o $@
-LDFLAGS = $(EXTRA_LDFLAGS)
-LOADLIBES = $(EXTRA_LIBES) $(CUSTOMLIBES) -lg++ # need lg++ for win32, really!
+LDFLAGS = $(EXTRA_LDFLAGS) $(MODULE_LDFLAGS) -L $(depth)/lib/out -L $(depth)/flower/out
+LOADLIBES = $(EXTRA_LIBES) $(MODULE_LIBES) -lg++ # need lg++ for win32, really!
#
# librarian:
#
EXECUTABLE = $(NAME)$(EXE)
LIB_PREFIX = lib
+
+ifndef LIB_SUFFIX
LIB_SUFFIX = .a
+endif
+
LIBRARY = $(LIB_PREFIX)$(NAME)$(LIB_SUFFIX)
#
DOCDIR=$(depth)/$(outdir)
# .hh should be first. Don't know why
+# take some trouble to auto sources and obsolete stuff.
progdocs=$(shell find -name '*.hh' |egrep -v 'obsolete/|out/') $(shell find -name '*.cc'|egrep -v 'out/|obsolete/')
+
+
+pod2html=pod2html
pod2groff=pod2man --center="LilyPond documentation" --section="0"\
--release="LilyPond $(TOPLEVEL_MAJOR_VERSION).$(TOPLEVEL_MINOR_VERSION).$(TOPLEVEL_PATCH_LEVEL)" $< > $@
+
+
STRIP=strip --strip-debug
ifdef stablecc
STABLEOBS=$(addprefix $(outdir)/,$(stablecc:.cc=.o))
endif
-stablecc=
+
+# substitute $(STRIP) if you want stripping
DO_STRIP=true
# list of custom libraries:
#
-# yes, i know about the -L and -l options,
-# but these libraries get rebuild when needed.
-CUSTOMLIBES = $(LIBLILY) $(LIBFLOWER)
-
-LOADLIBES +=
+MODULE_LIBDEPS=check-flower-deps check-lily-deps
+MODULE_LIBES=-llily -lflower
#
# main target of this module: