/[svn]/linuxsampler/trunk/configure.ac
ViewVC logotype

Diff of /linuxsampler/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

linuxsampler/trunk/configure.in revision 2275 by schoenebeck, Mon Sep 19 21:48:45 2011 UTC linuxsampler/trunk/configure.ac revision 3259 by schoenebeck, Wed May 31 14:41:04 2017 UTC
# Line 1  Line 1 
 AC_INIT(configure.in)  
   
1  #------------------------------------------------------------------------------------  #------------------------------------------------------------------------------------
2  # LinuxSampler's / liblinuxsampler's "official" release version:  # LinuxSampler's / liblinuxsampler's "official" release version:
3    
4  LINUXSAMPLER_RELEASE_MAJOR=1  m4_define(linuxsampler_release_major, 2)
5  LINUXSAMPLER_RELEASE_MINOR=0  m4_define(linuxsampler_release_minor, 0)
6  LINUXSAMPLER_RELEASE_BUILD=0.svn15  m4_define(linuxsampler_release_build, 0.svn59)
7    
8    
9    AC_INIT([linuxsampler],[linuxsampler_release_major.linuxsampler_release_minor.linuxsampler_release_build])
10    AC_CONFIG_SRCDIR([configure.ac])
11    
12  #------------------------------------------------------------------------------------  #------------------------------------------------------------------------------------
13  # The following is the libtool / shared library version. This doesn't have to  # The following is the libtool / shared library version. This doesn't have to
# Line 24  LINUXSAMPLER_RELEASE_BUILD=0.svn15 Line 26  LINUXSAMPLER_RELEASE_BUILD=0.svn15
26  #  6. If any interfaces have been removed since the last public release, then set age  #  6. If any interfaces have been removed since the last public release, then set age
27  #     to 0.  #     to 0.
28    
29  LIBLINUXSAMPLER_LT_CURRENT=3  LIBLINUXSAMPLER_LT_CURRENT=4
30  LIBLINUXSAMPLER_LT_REVISION=0  LIBLINUXSAMPLER_LT_REVISION=0
31  LIBLINUXSAMPLER_LT_AGE=0  LIBLINUXSAMPLER_LT_AGE=0
32  SHARED_VERSION_INFO="$LIBLINUXSAMPLER_LT_CURRENT:$LIBLINUXSAMPLER_LT_REVISION:$LIBLINUXSAMPLER_LT_AGE"  SHARED_VERSION_INFO="$LIBLINUXSAMPLER_LT_CURRENT:$LIBLINUXSAMPLER_LT_REVISION:$LIBLINUXSAMPLER_LT_AGE"
# Line 33  SHARED_VERSION_INFO="$LIBLINUXSAMPLER_LT Line 35  SHARED_VERSION_INFO="$LIBLINUXSAMPLER_LT
35  # the LSCP specification version this LinuSampler release complies with:  # the LSCP specification version this LinuSampler release complies with:
36    
37  LSCP_RELEASE_MAJOR=1  LSCP_RELEASE_MAJOR=1
38  LSCP_RELEASE_MINOR=5  LSCP_RELEASE_MINOR=7
39    
40  AC_DEFINE_UNQUOTED(LSCP_RELEASE_MAJOR, ${LSCP_RELEASE_MAJOR}, [LSCP spec major version this release complies with.])  AC_DEFINE_UNQUOTED(LSCP_RELEASE_MAJOR, ${LSCP_RELEASE_MAJOR}, [LSCP spec major version this release complies with.])
41  AC_DEFINE_UNQUOTED(LSCP_RELEASE_MINOR, ${LSCP_RELEASE_MINOR}, [LSCP spec minor version this release complies with.])  AC_DEFINE_UNQUOTED(LSCP_RELEASE_MINOR, ${LSCP_RELEASE_MINOR}, [LSCP spec minor version this release complies with.])
42    
43    AM_INIT_AUTOMAKE([subdir-objects])
44    AC_PROG_CC
45  AC_PROG_CXX  AC_PROG_CXX
46  AC_LIBTOOL_WIN32_DLL  AC_LIBTOOL_WIN32_DLL
47  AM_PROG_LIBTOOL  AC_PROG_LIBTOOL
48    AC_PROG_LEX
49    AC_PROG_YACC
50    
51  AC_SUBST(SHLIB_VERSION_ARG)  AC_SUBST(SHLIB_VERSION_ARG)
52  AC_SUBST(SHARED_VERSION_INFO)  AC_SUBST(SHARED_VERSION_INFO)
53    
54    module=yes eval LIB_EXT=$shrext_cmds
55    AC_SUBST(LIB_EXT)
56    
57  AC_C_BIGENDIAN  AC_C_BIGENDIAN
58  AC_CANONICAL_HOST  AC_CANONICAL_HOST
59    
# Line 101  AC_CHECK_HEADERS( Line 110  AC_CHECK_HEADERS(
110  AM_CONDITIONAL(HAVE_WINDOWS, test $have_windows = "1")  AM_CONDITIONAL(HAVE_WINDOWS, test $have_windows = "1")
111    
112  AC_MSG_CHECKING([whether UNIX98 compatible])  AC_MSG_CHECKING([whether UNIX98 compatible])
113  AC_LANG_SAVE  AC_LANG_PUSH([C])
114  AC_LANG_C  AC_RUN_IFELSE([AC_LANG_SOURCE([[
 AC_TRY_RUN([  
115  #ifndef _GNU_SOURCE  #ifndef _GNU_SOURCE
116  #define _GNU_SOURCE 1  #define _GNU_SOURCE 1
117  #endif  #endif
# Line 115  exit(0); /* UNIX98 compatible */ Line 123  exit(0); /* UNIX98 compatible */
123  exit(-1); /* not UNIX98 compatible */  exit(-1); /* not UNIX98 compatible */
124  #endif  #endif
125  }  }
126  ],  ]])],
127  have_unix98="yes",  have_unix98="yes",
128  have_unix98="no",  have_unix98="no",
129  have_unix98="no"  have_unix98="no"
130  )  )
131  AC_LANG_RESTORE  AC_LANG_POP([C])
132  AC_MSG_RESULT([$have_unix98])  AC_MSG_RESULT([$have_unix98])
133  if test "$have_unix98" = "no" -a "have_windows" = "0"; then  if test "$have_unix98" = "no" -a "$have_windows" = "0" -a "$mac" = "no" ; then
134      if test "x$HAVE_UNIX98" = "x"; then      if test "x$HAVE_UNIX98" = "x"; then
135          echo "LinuxSampler only runs on UNIX98 compatible systems, which is mandatory for"          echo "LinuxSampler only runs on UNIX98 compatible systems, which is mandatory for"
136          echo "pthread_mutexattr_settype() call in Mutex.cpp. You may want to run          echo "pthread_mutexattr_settype() call in Mutex.cpp. You may want to run"
137          echo "./configure with environment variable HAVE_UNIX98=1 in case you think you          echo "./configure with environment variable HAVE_UNIX98=1 in case you think you"
138          echo "have a UNIX98 compatible system."          echo "have a UNIX98 compatible system."
139          exit -1;          exit -1;
140      fi      fi
# Line 144  CFLAGS="$CFLAGS $PTHREAD_CFLAGS" Line 152  CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
152  CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"  CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"
153  CC="$PTHREAD_CC"  CC="$PTHREAD_CC"
154    
155    
156    # check for compiler's pragma diagnostic capabilities
157    m4_ifdef([m4_include(m4/pragma_diagnostics.m4)],,
158                 [sinclude([m4/pragma_diagnostics.m4])])
159    ACX_CXX_PRAGMA_DIAGNOSTICS
160    
161    
162  # check for a bug in NPTL-enabled glibc  # check for a bug in NPTL-enabled glibc
163  # (see Gentoo bug report #194076)  # (see Gentoo bug report #194076)
164  AC_ARG_ENABLE(nptl-bug-check,  AC_ARG_ENABLE(nptl-bug-check,
# Line 173  else Line 188  else
188      echo "NPTL glibc bug check disabled"      echo "NPTL glibc bug check disabled"
189  fi  fi
190    
191  # FIXME: this is actually a dependency of libgig, not of LS directly, why  
192  # isn't it hidden by libgig?  # In case Bison is available, determine the exact version, since we need to
193  AC_CHECK_HEADERS(uuid/uuid.h)  # use different custom parser code for Bison 2.x vs. Bison 3.x generated
194  AC_SEARCH_LIBS(uuid_generate, uuid)  # parser yacc tables.
195    if echo "$YACC" | grep -q bison; then
196        # NOTE: m4 removes [], that's why it needs to be escaped
197        bison_version=[`$YACC --version | head -n 1 | sed -e 's/[^0-9.]*\([-0-9.]\+\)$/\1/'`]
198        bison_version_major=`echo $bison_version | cut -d. -f1`
199        bison_version_minor=`echo $bison_version | cut -d. -f2`
200        AC_DEFINE_UNQUOTED(HAVE_BISON_MAJ,$bison_version_major,[Define to the major version of the GNU Bison program installed.])
201        AC_DEFINE_UNQUOTED(HAVE_BISON_MIN,$bison_version_minor,[Define to the minor version of the GNU Bison program installed.])
202    fi
203    
204    
205    
# Line 212  if test "$config_alsa_driver" = "yes"; t Line 235  if test "$config_alsa_driver" = "yes"; t
235      fi      fi
236    
237      echo -n "checking Alsa version... "      echo -n "checking Alsa version... "
238      AC_LANG_SAVE      AC_LANG_PUSH([C])
239      AC_LANG_C      AC_RUN_IFELSE([AC_LANG_SOURCE([[
     AC_TRY_RUN([  
240          #include <alsa/asoundlib.h>          #include <alsa/asoundlib.h>
241          void main(void) {          void main(void) {
242              /* ensure backward compatibility */              /* ensure backward compatibility */
# Line 223  if test "$config_alsa_driver" = "yes"; t Line 245  if test "$config_alsa_driver" = "yes"; t
245              #endif              #endif
246              exit(SND_LIB_MAJOR);              exit(SND_LIB_MAJOR);
247          }          }
248      ],      ]])],
249      alsa_major=0,      alsa_major=0,
250      alsa_major=$?,      alsa_major=$?,
251      alsa_major=0      alsa_major=0
252      )      )
253      AC_TRY_RUN([      AC_RUN_IFELSE([AC_LANG_SOURCE([[
254          #include <alsa/asoundlib.h>          #include <alsa/asoundlib.h>
255          void main(void) {          void main(void) {
256              /* ensure backward compatibility */              /* ensure backward compatibility */
# Line 237  if test "$config_alsa_driver" = "yes"; t Line 259  if test "$config_alsa_driver" = "yes"; t
259              #endif              #endif
260              exit(SND_LIB_MINOR);              exit(SND_LIB_MINOR);
261          }          }
262      ],      ]])],
263      alsa_minor=0,      alsa_minor=0,
264      alsa_minor=$?,      alsa_minor=$?,
265      alsa_minor=0      alsa_minor=0
266      )      )
267      AC_TRY_RUN([      AC_RUN_IFELSE([AC_LANG_SOURCE([[
268          #include <alsa/asoundlib.h>          #include <alsa/asoundlib.h>
269          void main(void) {          void main(void) {
270              /* ensure backward compatibility */              /* ensure backward compatibility */
# Line 251  if test "$config_alsa_driver" = "yes"; t Line 273  if test "$config_alsa_driver" = "yes"; t
273              #endif              #endif
274              exit(SND_LIB_SUBMINOR);              exit(SND_LIB_SUBMINOR);
275          }          }
276      ],      ]])],
277      alsa_subminor=0,      alsa_subminor=0,
278      alsa_subminor=$?,      alsa_subminor=$?,
279      alsa_subminor=0      alsa_subminor=0
280      )      )
281      AC_LANG_RESTORE      AC_LANG_POP([C])
282      echo "$alsa_major.$alsa_minor.$alsa_subminor";      echo "$alsa_major.$alsa_minor.$alsa_subminor";
283      AC_DEFINE_UNQUOTED(ALSA_MAJOR,$alsa_major,[Define to the major version number of your Alsa installation.])      AC_DEFINE_UNQUOTED(ALSA_MAJOR,$alsa_major,[Define to the major version number of your Alsa installation.])
284      AC_DEFINE_UNQUOTED(ALSA_MINOR,$alsa_minor,[Define to the minor version number of your Alsa installation.])      AC_DEFINE_UNQUOTED(ALSA_MINOR,$alsa_minor,[Define to the minor version number of your Alsa installation.])
# Line 287  if test "$config_jack_driver" = "yes"; t Line 309  if test "$config_jack_driver" = "yes"; t
309          AC_SUBST(JACK_CFLAGS)          AC_SUBST(JACK_CFLAGS)
310          linuxsampler_save_LIBS=$LIBS          linuxsampler_save_LIBS=$LIBS
311          LIBS="$JACK_LIBS $LIBS"          LIBS="$JACK_LIBS $LIBS"
312          AC_CHECK_FUNCS(jack_client_name_size jack_client_open)          AC_CHECK_FUNCS(jack_client_name_size jack_client_open \
313                           jack_on_info_shutdown)
314          LIBS=$linuxsampler_save_LIBS          LIBS=$linuxsampler_save_LIBS
315          have_audio_output_driver="true";          have_audio_output_driver="true";
316      fi      fi
# Line 512  AC_CHECK_HEADERS(dssi.h, Line 535  AC_CHECK_HEADERS(dssi.h,
535  AM_CONDITIONAL(HAVE_DSSI, test $config_have_dssi = "yes")  AM_CONDITIONAL(HAVE_DSSI, test $config_have_dssi = "yes")
536    
537  # LV2  # LV2
538  PKG_CHECK_MODULES(LV2, lv2core, config_have_lv2="yes", config_have_lv2="no")  PKG_CHECK_MODULES(LV2, lv2 >= 1.0.0, config_have_lv2="yes", config_have_lv2="no")
539  if test $config_have_lv2 = "no"; then  if test "$config_have_lv2" != "yes"; then
540      AC_CHECK_HEADER(lv2.h, config_have_lv2="yes", config_have_lv2="no")      PKG_CHECK_MODULES(LV2, lv2core >= 1.0.0, config_have_lv2="yes", config_have_lv2="no")
541  fi  fi
542    AC_SUBST(LV2_CFLAGS)
543    AC_SUBST(LV2_LIBS)
544  AM_CONDITIONAL(HAVE_LV2, test $config_have_lv2 = "yes")  AM_CONDITIONAL(HAVE_LV2, test $config_have_lv2 = "yes")
545    
546  # VST  # VST
# Line 579  fi Line 604  fi
604  # Checks for various DLL libraries  # Checks for various DLL libraries
605    
606  # Check presence of libgig  # Check presence of libgig
607  libgig_version="3.3.0"  libgig_version="4.0.0"
608  PKG_CHECK_MODULES(GIG, gig >= $libgig_version, HAVE_GIG=true, HAVE_GIG=false)  PKG_CHECK_MODULES(GIG, gig >= $libgig_version, HAVE_GIG=true, HAVE_GIG=false)
609  if test "$HAVE_GIG" = "false"; then  if test "$HAVE_GIG" = "false"; then
610      echo "Required libgig version not found!"      echo "Required libgig version not found!"
# Line 625  fi Line 650  fi
650  AC_SUBST(SNDFILE_CFLAGS)  AC_SUBST(SNDFILE_CFLAGS)
651  AC_SUBST(SNDFILE_LIBS)  AC_SUBST(SNDFILE_LIBS)
652    
653  # Check for Vorbis support in libsndfile  # Check for Vorbis and FLAC support in libsndfile
654  linuxsampler_save_CFLAGS=$CFLAGS  linuxsampler_save_CFLAGS=$CFLAGS
655  CFLAGS="$SNDFILE_CFLAGS $CFLAGS"  CFLAGS="$SNDFILE_CFLAGS $CFLAGS"
656  AC_CHECK_DECLS([SF_FORMAT_VORBIS], [], [] ,[[#include <sndfile.h>]])  AC_CHECK_DECLS([SF_FORMAT_VORBIS, SF_FORMAT_FLAC], [], [], [[#include <sndfile.h>]])
657    
658  # Check for loop functionality in libsndfile  # Check for loop functionality in libsndfile
659  AC_CHECK_MEMBERS([SF_INSTRUMENT.loops],,  AC_CHECK_MEMBERS([SF_INSTRUMENT.loops],,
# Line 740  AC_ARG_ENABLE(pthread-testcancel, Line 765  AC_ARG_ENABLE(pthread-testcancel,
765                            asynchronous cancel of pthreads (default=yes                            asynchronous cancel of pthreads (default=yes
766                            for Mac targets, no otherwise).],                            for Mac targets, no otherwise).],
767    [config_pthread_testcancel="$enableval"],    [config_pthread_testcancel="$enableval"],
768    []    [])
 )  
769  if test "$config_pthread_testcancel" = "yes"; then  if test "$config_pthread_testcancel" = "yes"; then
770    AC_DEFINE_UNQUOTED(CONFIG_PTHREAD_TESTCANCEL, 1, [Define to 1 to enable pthread_testcancel() calls.])    AC_DEFINE_UNQUOTED(CONFIG_PTHREAD_TESTCANCEL, 1, [Define to 1 to enable pthread_testcancel() calls.])
771  fi  fi
# Line 1221  AC_SUBST(config_default_instruments_db_f Line 1245  AC_SUBST(config_default_instruments_db_f
1245  ###########################################################################  ###########################################################################
1246  # Automatic Benchmarks (to detect the best algorithms for the system)  # Automatic Benchmarks (to detect the best algorithms for the system)
1247    
 AC_LANG_SAVE  
   
1248  if test "$config_signed_triang_algo" = "benchmark"; then  if test "$config_signed_triang_algo" = "benchmark"; then
1249      echo -n "benchmarking for the best (signed) triangular oscillator algorithm... "      echo -n "benchmarking for the best (signed) triangular oscillator algorithm... "
1250      AC_LANG_CPLUSPLUS      AC_LANG_PUSH([C++])
1251      AC_TRY_RUN([      AC_RUN_IFELSE([AC_LANG_SOURCE([[
1252              #define SIGNED 1              #define SIGNED 1
1253              #define SILENT 1              #define SILENT 1
1254              #include "${srcdir}/benchmarks/triang.cpp"              #include "${srcdir}/benchmarks/triang.cpp"
1255          ],          ]])],
1256          triang_signed=0,          triang_signed=0,
1257          triang_signed=$?,          triang_signed=$?,
1258          triang_signed=0          triang_signed=0
1259      )      )
1260        AC_LANG_POP([C++])
1261      if test "$triang_signed" = "2"; then      if test "$triang_signed" = "2"; then
1262          config_signed_triang_algo="intmath"          config_signed_triang_algo="intmath"
1263          echo "integer math"          echo "integer math"
# Line 1265  AC_DEFINE_UNQUOTED(CONFIG_SIGNED_TRIANG_ Line 1288  AC_DEFINE_UNQUOTED(CONFIG_SIGNED_TRIANG_
1288    
1289  if test "$config_unsigned_triang_algo" = "benchmark"; then  if test "$config_unsigned_triang_algo" = "benchmark"; then
1290      echo -n "benchmarking for the best (unsigned) triangular oscillator algorithm... "      echo -n "benchmarking for the best (unsigned) triangular oscillator algorithm... "
1291      AC_LANG_CPLUSPLUS      AC_LANG_PUSH([C++])
1292      AC_TRY_RUN([      AC_RUN_IFELSE([AC_LANG_SOURCE([[
1293              #define SIGNED 0              #define SIGNED 0
1294              #define SILENT 1              #define SILENT 1
1295              #include "${srcdir}/benchmarks/triang.cpp"              #include "${srcdir}/benchmarks/triang.cpp"
1296          ],          ]])],
1297          triang_unsigned=0,          triang_unsigned=0,
1298          triang_unsigned=$?,          triang_unsigned=$?,
1299          triang_unsigned=0          triang_unsigned=0
1300      )      )
1301        AC_LANG_POP([C++])
1302      if test "$triang_unsigned" = "2"; then      if test "$triang_unsigned" = "2"; then
1303          config_unsigned_triang_algo="intmath"          config_unsigned_triang_algo="intmath"
1304          echo "integer math"          echo "integer math"
# Line 1303  else Line 1327  else
1327  fi  fi
1328  AC_DEFINE_UNQUOTED(CONFIG_UNSIGNED_TRIANG_ALGO, ${triang_unsigned}, [Define unsigned triangular wave algorithm to be used.])  AC_DEFINE_UNQUOTED(CONFIG_UNSIGNED_TRIANG_ALGO, ${triang_unsigned}, [Define unsigned triangular wave algorithm to be used.])
1329    
 AC_LANG_RESTORE  
   
1330    
1331  ###########################################################################  ###########################################################################
1332  # Create Build Files  # Create Build Files
1333    
1334  AM_CONFIG_HEADER(config.h)  AC_CONFIG_HEADERS([config.h])
 AM_INIT_AUTOMAKE(linuxsampler, "$LINUXSAMPLER_RELEASE_MAJOR.$LINUXSAMPLER_RELEASE_MINOR.$LINUXSAMPLER_RELEASE_BUILD")  
1335    
1336  AC_LANG_CPLUSPLUS  AC_LANG([C++])
1337    
1338  # autoconf 2.59/libtool 1.5.12 bug? work-around. Without a check like  # autoconf 2.59/libtool 1.5.12 bug? work-around. Without a check like
1339  # this, the dlfcn.h check in am_prog_libtool may fail.  # this, the dlfcn.h check in am_prog_libtool may fail.
1340  AC_CHECK_HEADER(stdlib.h)  AC_CHECK_HEADER(stdlib.h)
1341    
1342  AC_OUTPUT( \  AC_CONFIG_FILES([\
1343      Makefile \      Makefile \
1344      man/Makefile \      man/Makefile \
1345      man/linuxsampler.1 \      man/linuxsampler.1 \
1346        man/lscp.1 \
1347      src/Makefile \      src/Makefile \
1348      src/db/Makefile \      src/db/Makefile \
1349      src/network/Makefile \      src/network/Makefile \
# Line 1340  AC_OUTPUT( \ Line 1362  AC_OUTPUT( \
1362      src/hostplugins/Makefile \      src/hostplugins/Makefile \
1363      src/hostplugins/dssi/Makefile \      src/hostplugins/dssi/Makefile \
1364      src/hostplugins/lv2/Makefile \      src/hostplugins/lv2/Makefile \
1365        src/hostplugins/lv2/manifest.ttl \
1366      src/hostplugins/vst/Makefile \      src/hostplugins/vst/Makefile \
1367      src/hostplugins/au/Makefile \      src/hostplugins/au/Makefile \
1368        src/scriptvm/Makefile \
1369        src/scriptvm/editor/Makefile \
1370        src/shell/Makefile \
1371      linuxsampler.spec \      linuxsampler.spec \
1372      debian/Makefile \      debian/Makefile \
1373      Artwork/Makefile \      Artwork/Makefile \
# Line 1353  AC_OUTPUT( \ Line 1379  AC_OUTPUT( \
1379      Documentation/Engines/gig/Makefile \      Documentation/Engines/gig/Makefile \
1380      linuxsampler.pc \      linuxsampler.pc \
1381      Doxyfile \      Doxyfile \
1382  )  ])
1383    AC_OUTPUT
1384    
1385  # resolve all nested variables in '${config_plugin_dir}'  # resolve all nested variables in '${config_plugin_dir}'
1386  # (merely for providing a human readable summary below)  # (merely for providing a human readable summary below)
# Line 1369  echo "" Line 1396  echo ""
1396  echo "#####################################################################"  echo "#####################################################################"
1397  echo "# LinuxSampler Configuration                                        #"  echo "# LinuxSampler Configuration                                        #"
1398  echo "#-------------------------------------------------------------------#"  echo "#-------------------------------------------------------------------#"
1399  echo "# Release Version: ${LINUXSAMPLER_RELEASE_MAJOR}.${LINUXSAMPLER_RELEASE_MINOR}.${LINUXSAMPLER_RELEASE_BUILD}"  echo "# Release Version: ${VERSION}"
1400  echo "# LSCP Version: ${LSCP_RELEASE_MAJOR}.${LSCP_RELEASE_MINOR}"  echo "# LSCP Version: ${LSCP_RELEASE_MAJOR}.${LSCP_RELEASE_MINOR}"
1401  echo "#-------------------------------------------------------------------"  echo "#-------------------------------------------------------------------"
1402  echo "# Assembly Optimizations: ${config_asm}"  echo "# Assembly Optimizations: ${config_asm}"

Legend:
Removed from v.2275  
changed lines
  Added in v.3259

  ViewVC Help
Powered by ViewVC