# add entry to missing-list ($2, one of 'OPTIONAL', 'REQUIRED').
AC_DEFUN(STEPMAKE_CHECK_VERSION, [
r="`eval echo '$'"$1"`"
- AC_MSG_CHECKING("$r version")
- #exe=`STEPMAKE_GET_EXECUTABLE($r)`
+ AC_MSG_CHECKING([$r version])
exe=`STEPMAKE_GET_EXECUTABLE($r)`
ver=`STEPMAKE_GET_VERSION($exe)`
num=`STEPMAKE_NUMERIC_VERSION($ver)`
req=`STEPMAKE_NUMERIC_VERSION($3)`
- AC_MSG_RESULT("$ver")
+ AC_MSG_RESULT([$ver])
if test "$num" -lt "$req"; then
- STEPMAKE_ADD_ENTRY($2, "$r $3 (installed: $ver)")
+ STEPMAKE_ADD_ENTRY($2, ["$r $3 (installed: $ver)"])
fi
])
])
AC_DEFUN(STEPMAKE_CXX, [
- AC_LANG_CPLUSPLUS
+ AC_LANG([C++])
AC_PROG_CXX
STEPMAKE_OPTIONAL_REQUIRED(CXX, c++, $1)
AC_DEFUN(STEPMAKE_CXXTEMPLATE, [
AC_CACHE_CHECK([whether explicit instantiation is needed],
lily_cv_need_explicit_instantiation,
- AC_TRY_LINK([
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
template <class T> struct foo { static int baz; };
template <class T> int foo<T>::baz = 1;
- ], [ return foo<int>::baz; ],
- lily_cv_need_explicit_instantiation=no,
- lily_cv_need_explicit_instantiation=yes))
+ ]], [[ return foo<int>::baz; ]])],[lily_cv_need_explicit_instantiation=no],[lily_cv_need_explicit_instantiation=yes]))
if test x"$lily_cv_need_explicit_instantiation"x = x"yes"x; then
AC_DEFINE(NEED_EXPLICIT_INSTANTIATION)
fi
presome=${ac_default_prefix}
fi
- package_datadir=$datadir/$package
- local_package_datadir=$package_datadir/$FULL_VERSION
- build_package_datadir=$builddir/share/$package
+ build_package_datadir=$ugh_ugh_autoconf250_builddir/share/$package
DATADIR=`echo ${datadir} | sed "s!\\\${prefix}!$presome!"`
- PACKAGE_DATADIR=`echo ${package_datadir} | sed "s!\\\${prefix}!$presome!"`
- LOCAL_PACKAGE_DATADIR=`echo ${local_package_datadir} | sed "s!\\\${prefix}!$presome!"`
BUILD_PACKAGE_DATADIR=`echo ${build_package_datadir} | sed "s!\\\${prefix}!$presome!"`
AC_SUBST(datadir)
- AC_SUBST(package_datadir)
- AC_SUBST(local_package_datadir)
AC_SUBST(build_package_datadir)
- AC_DEFINE_UNQUOTED(DATADIR, "${DATADIR}")
- AC_DEFINE_UNQUOTED(PACKAGE_DATADIR, "${PACKAGE_DATADIR}")
- AC_DEFINE_UNQUOTED(LOCAL_PACKAGE_DATADIR, "${LOCAL_PACKAGE_DATADIR}")
- AC_DEFINE_UNQUOTED(BUILD_PACKAGE_DATADIR, "${BUILD_PACKAGE_DATADIR}")
+ AC_DEFINE_UNQUOTED(DATADIR, ["${DATADIR}"])
+ AC_DEFINE_UNQUOTED(BUILD_PACKAGE_DATADIR, ["${BUILD_PACKAGE_DATADIR}"])
+])
+
+## ugh: cut & paste programming from datadir.
+AC_DEFUN(STEPMAKE_LIBDIR, [
+
+ if test "$libdir" = "\${exec_prefix}/lib"; then
+ libdir='${exec_prefix}/lib'
+ fi
+ presome=$exec_prefix
+ build_package_libdir=$ugh_ugh_autoconf250_builddir/lib/$package
+
+ LIBDIR=`echo ${libdir} | sed "s!\\\${exec_prefix}!$presome!"`
+ BUILD_PACKAGE_LIBDIR=`echo ${build_package_libdir} | sed "s!\\\${exec_prefix}!$presome!"`
+
+ AC_SUBST(libdir)
+ AC_SUBST(build_package_libdir)
+ AC_DEFINE_UNQUOTED(LIBDIR, ["${LIBDIR}"])
+ AC_DEFINE_UNQUOTED(BUILD_PACKAGE_LIBDIR, ["${BUILD_PACKAGE_LIBDIR}"])
])
AC_SUBST(OPTIONAL)
AC_SUBST(REQUIRED)
- AC_OUTPUT($CONFIGFILE.make:config.make.in)
+ AC_CONFIG_FILES([$CONFIGFILE.make:config.make.in])
+AC_OUTPUT
if test -n "$OPTIONAL"; then
# AC_PROG_LEX
# urg: automake 1.3: hope this doesn't break 1.2 ac_cv_pro_lex_root hack...
- # AC_DECL_YYTEXT
+ # AC_PROG_LEX()
# ugh, ugh
ac_cv_prog_lex_root=lex.yy
STEPMAKE_PROGS(FLEX, flex, $1)
AC_DEFUN(STEPMAKE_FLEXLEXER, [
- AC_HAVE_HEADERS(FlexLexer.h, true, false)
+ AC_CHECK_HEADERS([FlexLexer.h],[true],[false])
if test $? -ne 0; then
warn='FlexLexer.h (flex package)'
STEPMAKE_ADD_ENTRY($1, $warn)
LOCALEDIR=`echo ${localedir} | sed "s!\\\${prefix}!$presome!"`
AC_SUBST(localedir)
- AC_DEFINE_UNQUOTED(LOCALEDIR, "${LOCALEDIR}")
+ AC_DEFINE_UNQUOTED(LOCALEDIR, ["${LOCALEDIR}"])
AC_CHECK_LIB(intl, gettext)
AC_CHECK_FUNCS(gettext)
])
AC_DEFUN([STEPMAKE_GUILE_FLAGS], [
exe=`STEPMAKE_GET_EXECUTABLE($guile_config)`
if test -x $exe; then
- AC_MSG_CHECKING("guile compile flags")
+ AC_MSG_CHECKING([guile compile flags])
GUILE_CFLAGS="`$guile_config compile`"
AC_MSG_RESULT($GUILE_CFLAGS)
- AC_MSG_CHECKING("guile link flags")
+ AC_MSG_CHECKING([guile link flags])
GUILE_LDFLAGS="`$guile_config link`"
AC_MSG_RESULT($GUILE_LDFLAGS)
fi
AC_DEFUN(STEPMAKE_GUILE_DEVEL, [
## First, let's just see if we can find Guile at all.
- AC_MSG_CHECKING("for guile-config")
+ AC_MSG_CHECKING([for guile-config])
for guile_config in guile-config $target-guile-config $build-guile-config; do
- AC_MSG_RESULT("$guile_config")
+ AC_MSG_RESULT([$guile_config])
if ! $guile_config --version > /dev/null 2>&1 ; then
- AC_MSG_WARN("cannot execute $guile_config")
- AC_MSG_CHECKING("if we are cross compiling")
+ AC_MSG_WARN([cannot execute $guile_config])
+ AC_MSG_CHECKING([if we are cross compiling])
GUILE_CONFIG='echo no guile-config'
else
GUILE_CONFIG=$guile_config
AC_DEFUN(STEPMAKE_INIT, [
+ AC_PREREQ(2.50)
. $srcdir/VERSION
FULL_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
if test x$MY_PATCH_LEVEL != x; then
AC_MSG_CHECKING(builddir)
- builddir="`pwd`"
-
+ ugh_ugh_autoconf250_builddir="`pwd`"
+
if test "$srcdir" = "."; then
srcdir_build=yes
else
srcdir_build=no
- package_builddir="`dirname $builddir`"
+ package_builddir="`dirname $ugh_ugh_autoconf250_builddir`"
package_srcdir="`dirname $srcdir`"
fi
- AC_MSG_RESULT($builddir)
+ AC_MSG_RESULT($ugh_ugh_autoconf250_builddir)
(cd stepmake 2>/dev/null || mkdir stepmake)
(cd stepmake; rm -f bin; ln -s ../$srcdir/bin .)
- AC_CONFIG_AUX_DIR(bin)
+# only possible with autoconf < 2.50 -- hardcoded in configure.in
+# AC_CONFIG_AUX_DIR(bin)
stepmake=stepmake
else
AC_MSG_RESULT($PACKAGE)
AC_MSG_CHECKING(builddir)
- builddir="`pwd`"
+ ugh_ugh_autoconf250_builddir="`pwd`"
if test "$srcdir" = "."; then
srcdir_build=yes
else
srcdir_build=no
fi
- AC_MSG_RESULT($builddir)
+ AC_MSG_RESULT($ugh_ugh_autoconf250_builddir)
AC_MSG_CHECKING(for stepmake)
# Check for installed stepmake
AC_MSG_RESULT($stepmake)
else
stepmake="`cd $srcdir/stepmake; pwd`"
- AC_MSG_RESULT($srcdir/stepmake ($datadir/stepmake not found))
+ AC_MSG_RESULT([$srcdir/stepmake ($datadir/stepmake not found)])
fi
- AC_CONFIG_AUX_DIR(\
- $HOME/usr/local/share/stepmake/bin\
- $HOME/usr/local/lib/stepmake/bin\
- $HOME/usr/share/stepmake/bin\
- $HOME/usr/lib/stepmake/bin\
- /usr/local/share/stepmake/bin\
- /usr/local/lib/stepmake/bin\
- /usr/share/stepmake/bin\
- /usr/lib/stepmake/bin\
- stepmake/bin\
- $srcdir/stepmake/bin\
- )
- fi
-
- AC_SUBST(builddir)
+# only possible with autoconf < 2.50 -- hardcoded in configure.in
+# AC_CONFIG_AUX_DIR(\
+# stepmake/bin\
+# $srcdir/stepmake/bin\
+# )
+ fi
+
+ AC_SUBST(ugh_ugh_autoconf250_builddir)
AC_SUBST(stepmake)
AC_SUBST(package)
AC_SUBST(PACKAGE)
AC_SUBST(PACKAGE_NAME)
- AC_DEFINE_UNQUOTED(PACKAGE, "${PACKAGE_NAME}")
- AC_DEFINE_UNQUOTED(TOPLEVEL_VERSION, "${FULL_VERSION}")
+ # We don't need the upper case variant,
+ # so stick to macros are uppercase convention.
+ # AC_DEFINE_UNQUOTED(package, ["${package}"])
+ # AC_DEFINE_UNQUOTED(PACKAGE, ["${PACKAGE}"])
+ AC_DEFINE_UNQUOTED(PACKAGE, ["${package}"])
+ AC_DEFINE_UNQUOTED(PACKAGE_NAME, ["${PACKAGE_NAME}"])
+ AC_DEFINE_UNQUOTED(TOPLEVEL_VERSION, ["${FULL_VERSION}"])
if test -z "$package_depth"; then
package_depth="."
AC_SUBST(LN)
AC_SUBST(LN_S)
AC_SUBST(INSTALL)
- AC_DEFINE_UNQUOTED(DIRSEP, '${DIRSEP}')
- AC_DEFINE_UNQUOTED(PATHSEP, '${PATHSEP}')
+ AC_DEFINE_UNQUOTED(DIRSEP, ['${DIRSEP}'])
+ AC_DEFINE_UNQUOTED(PATHSEP, ['${PATHSEP}'])
AC_SUBST(DIRSEP)
AC_SUBST(PATHSEP)
AC_SUBST(ROOTSEP)
STEPMAKE_DATADIR
+ STEPMAKE_LIBDIR
])
[kpathsea_b=$with_kpathsea])
if test "$kpathsea_b" != "no"; then
- AC_HAVE_HEADERS(kpathsea/kpathsea.h)
+ AC_CHECK_HEADERS([kpathsea/kpathsea.h])
AC_CHECK_LIB(kpathsea, kpse_find_file)
AC_CHECK_FUNCS(kpse_find_file,,kpathsea_b=no)
if test "$kpathsea_b" = "no"; then
warn='kpathsea (libkpathsea-dev or kpathsea-devel package)
Else, please specify the location of your kpathsea using
- --with-kpathea-include and --with-kpathsea-lib options. You should
+ --with-kpathsea-include and --with-kpathsea-lib options. You should
install kpathsea; see INSTALL.txt. Rerun ./configure
--without-kpathsea only if kpathsea is not available for your
platform.'
AC_DEFUN(STEPMAKE_PYTHON_DEVEL, [
- AC_HAVE_HEADERS(python2.2/Python.h python2.1/Python.h python2.0/Python.h python2/Python.h python/Python.h python1.5/Python.h Python.h, PYTHON_HEADER=yes)
+ AC_CHECK_HEADERS([python2.2/Python.h python2.1/Python.h python2.0/Python.h python2/Python.h python/Python.h python1.5/Python.h Python.h],[PYTHON_HEADER=yes])
if test -z "$PYTHON_HEADER"; then
warn='python.h (python-devel, python-dev or libpython-dev package)'
STEPMAKE_ADD_ENTRY($1, $warn)
source file of the GNU LilyPond music typesetter
- (c) 1999--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1999--2003 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <stdio.h>
#include "scm-hash.hh"
#include "ly-smobs.icc"
-void
+/*
+ Return: number of objects.
+ */
+int
copy_scm_hashes (SCM dest, SCM src)
{
- for (int i = SCM_SYMBOL_LENGTH (src); i--;)
+ int k = 0;
+ for (int i = SCM_VECTOR_LENGTH (src); i--;)
for (SCM s = scm_vector_ref (src, SCM_MAKINUM (i)); ly_pair_p(s); s = ly_cdr (s))
{
scm_hashq_set_x (dest, ly_caar (s), ly_cdar (s));
+ k++;
}
+ return k ;
}
{
hash_tab_ = SCM_EOL;
- elt_count_ = src.elt_count_;
+ elt_count_ = 0;
smobify_self ();
hash_tab_ = scm_make_vector (gh_int2scm (src.elt_count_ >? 11 ), SCM_EOL);
- copy_scm_hashes (hash_tab_, src.hash_tab_);
+ elt_count_ = copy_scm_hashes (hash_tab_, src.hash_tab_);
}
void
if (&src == this)
return;
- elt_count_ = src.elt_count_;
hash_tab_ = scm_make_vector (gh_int2scm (src.elt_count_ >? 11), SCM_EOL);
- copy_scm_hashes (hash_tab_, src.hash_tab_);
+ elt_count_ = copy_scm_hashes (hash_tab_, src.hash_tab_);
}
SCM
/*
resize if getting too large.
*/
- if (elt_count_ > 2 * SCM_SYMBOL_LENGTH (hash_tab_))
+ if (elt_count_ > 2 * SCM_VECTOR_LENGTH (hash_tab_))
{
SCM nh = scm_make_vector (gh_int2scm (3* elt_count_+1), SCM_EOL);
- copy_scm_hashes (nh, hash_tab_);
+ elt_count_ = copy_scm_hashes (nh, hash_tab_);
hash_tab_ = nh;
}
-
}
// UGH.
Scheme_hash_table::remove (SCM k)
{
scm_hashq_remove_x (hash_tab_, k);
- elt_count_ --;
+ /*
+ don't decrease elt_count_ , as this may cause underflow. The exact
+ value of elt_count_ is not important.
+ */
}
Scheme_hash_table::~Scheme_hash_table ()
Scheme_hash_table::to_alist () const
{
SCM l = SCM_EOL;
- for (int i = SCM_SYMBOL_LENGTH (hash_tab_); i--;)
+ for (int i = SCM_VECTOR_LENGTH (hash_tab_); i--;)
for (SCM s = scm_vector_ref (hash_tab_, gh_int2scm (i)); ly_pair_p(s); s = ly_cdr (s))
{
l = scm_acons (ly_caar (s), ly_cdar (s), l);
\consists "Time_signature_performer"
}
-\translator { \StaffContext }
-\translator { \StaffContext
- \name RhythmicStaff
-}
-
VoiceContext = \translator {
\type "Performer_group_performer"
\consists "Piano_pedal_performer"
\accepts "Thread"
}
-\translator { \VoiceContext }
ThreadContext = \translator {
\type "Performer_group_performer"
\consists "Note_performer"
\consists "Tie_performer"
}
-\translator { \ThreadContext }
-
-% retain for compatibility reasons (FIXME: convert-ly)
-\translator {
- \type "Performer_group_performer"
- \name Grace
-}
-\translator
-{
+FiguredBassContext = \translator {
\type "Performer_group_performer"
- \name VoiceTwo\consists "Note_performer"
-
+ \name FiguredBass
+ \consists "Swallow_performer"
}
GrandStaffContext = \translator {
\accepts RhythmicStaff
\accepts Staff
}
-\translator { \GrandStaffContext }
PianoStaffContext = \translator {
\type "Performer_group_performer"
\name "PianoStaff"
\accepts Staff
}
-\translator { \PianoStaffContext }
+
+ScoreContext = \translator {
+ \type "Score_performer"
+
+ \name Score
+ \alias Timing
+ instrument = #"bright acoustic"
+ \accepts Staff
+ \accepts GrandStaff
+ \accepts PianoStaff
+ \accepts Lyrics
+ \accepts StaffGroup
+ \accepts ChoirStaff
+ \accepts RhythmicStaff
+ \accepts ChordNames
+ \accepts FiguredBass
+
+ \alias "Timing"
+ \consists "Timing_translator"
+ \consists "Swallow_performer"
+
+ dynamicAbsoluteVolumeFunction = #default-dynamic-absolute-volume
+ instrumentEqualizer = #default-instrument-equalizer
+}
+
\translator {
\type "Performer_group_performer"
\accepts Staff
}
-ScoreContext = \translator {
- \type "Score_performer"
- \name Score
- \alias Timing
- instrument = #"bright acoustic"
- \accepts Staff
- \accepts GrandStaff
- \accepts PianoStaff
- \accepts Lyrics
- \accepts StaffGroup
- \accepts ChoirStaff
- \accepts RhythmicStaff
- \accepts ChordNames
- \alias "Timing"
- \consists "Timing_translator"
- \consists "Swallow_performer"
-
- dynamicAbsoluteVolumeFunction = #default-dynamic-absolute-volume
- instrumentEqualizer = #default-instrument-equalizer
-}
-\translator { \ScoreContext }
+\translator { \ScoreContext }
+\translator { \StaffContext }
+\translator { \StaffContext \name RhythmicStaff }
+\translator { \VoiceContext }
+\translator { \ThreadContext }
+\translator { \PianoStaffContext }
+\translator { \GrandStaffContext }
+\translator { \FiguredBassContext }